Module Ecaml.Process
Process
is used to create "subprocesses" or "child processes" of the Emacs process, which is their "parent process". A subprocess of Emacs may be "synchronous" or "asynchronous", depending on how it is created. When you create a synchronous subprocess, the program waits for the subprocess to terminate before continuing execution. When you create an asynchronous subprocess, it can run in parallel with Emacs. This kind of subprocess is represented within Emacs by a Process.t
. Programs can use this object to communicate with the subprocess or to control it. For example, you can send signals, obtain status information, receive output from the process, or send input to it.
(Info-goto-node "(elisp)Processes")
.
type t
= Ecaml__.Process0.t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
include Ecaml__.Import.Value.Subtype with type t := t
type value
type t
= private value
We expose
private value
for free identity conversions when the value is nested in some covariant type, e.g.(symbols : Symbol.t list :> Value.t list)
rather thanList.map symbols ~f:Symbol.to_value
.
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val eq : t -> t -> bool
eq t1 t2 = Value.eq (to_value t1) (to_value t2)
, i.e.eq
checks whether the Emacs values underlyingt1
andt2
are physically equal. This is different thanphys_equal t1 t2
, because we don't always wrapeq
Emacs values inphys_equal
OCaml values. I.e.phys_equal t1 t2
implieseq t1 t2
, but not the converse.
val is_in_subtype : value -> bool
include Ecaml_value__.Valueable0.S with type t := t
val of_value_exn : Ecaml_value__.Value0.t -> t
val to_value : t -> Ecaml_value__.Value0.t
val type_ : t type_
val t : t type_
val buffer : t -> Ecaml__.Import.Buffer.t option
(describe-function 'process-buffer)
val command : t -> string list option
(describe-function 'process-command)
val name : t -> string
(describe-function 'process-name)
val pid : t -> Core_kernel.Pid.t option
(describe-function 'process-id)
val query_on_exit : t -> bool
(describe-function 'process-query-on-exit-flag)
module Status : sig ... end
module Exit_status : sig ... end
val exit_status : t -> Exit_status.t
(describe-function 'process-exit-status)
module Exited : sig ... end
val exited : t -> Exited.t Async_kernel.Deferred.t
val is_alive : t -> bool
(describe-function 'process-live-p)
val set_query_on_exit : t -> bool -> unit
set_query_on_exit t
specifies whether Emacs should query the user about killingt
when it exits.(describe-function 'set-process-query-on-exit-flag)
.
val all_emacs_children : unit -> t list
(describe-function 'process-list)
val get_property : t -> Symbol.t -> Ecaml__.Import.Value.t option
(describe-function 'process-get)
val set_property : t -> Symbol.t -> Ecaml__.Import.Value.t -> unit
(describe-function 'process-put)
val create : string -> string list -> name:string -> ?buffer:Ecaml__.Import.Buffer.t -> unit -> t
(Info-goto-node "(elisp)Asynchronous Processes")
(describe-function 'start-process)
val find_by_name : string -> t option
(describe-function 'get-process)
(Info-goto-node "(elisp)Process Information")
module Call : sig ... end
val call_result_exn : ?input:Call.Input.t -> ?output:Call.Output.t -> ?redisplay_on_output:bool -> ?working_directory:Working_directory.t -> string -> string list -> Call.Result.t
(Info-goto-node "(elisp)Synchronous Processes")
(describe-function 'call-process)
val call_region_exn : ?input:Call.Region_input.t -> ?output:Call.Output.t -> ?redisplay_on_output:bool -> ?working_directory:Working_directory.t -> string -> string list -> Call.Result.t
(Info-goto-node "(elisp)Synchronous Processes")
(describe-function 'call-process-region)
val call_exn : ?input:Call.Input.t -> ?working_directory:Working_directory.t -> ?strip_whitespace:bool -> ?verbose_exn:bool -> string -> string list -> string
call_exn
runscall_result_exn
, strips whitespace from stdout+stderr ifstrip_whitespace
istrue
, and returns the resulting string, raising on nonzero exit.
val call_expect_no_output_exn : ?input:Call.Input.t -> ?working_directory:Working_directory.t -> ?strip_whitespace:bool -> ?verbose_exn:bool -> string -> string list -> unit
call_expect_no_output_exn
runscall_result_exn
and raises if the command output is not the empty string or on nonzero exit.
val shell_command_result : ?input:Call.Input.t -> ?output:Call.Output.t -> ?redisplay_on_output:bool -> ?working_directory:Working_directory.t -> string -> Call.Result.t
val shell_command_exn : ?input:Call.Input.t -> ?working_directory:Working_directory.t -> ?verbose_exn:bool -> string -> string
shell_command_exn command
runscommand
in a subshell, strips whitespace from stdout+stderr, and returns the resulting string, raising on nonzero exit.
val shell_command_expect_no_output_exn : ?input:Call.Input.t -> ?working_directory:Working_directory.t -> ?verbose_exn:bool -> string -> unit
val create_unix_network_process : unit -> filter:(t -> Text.t -> unit) -> name:string -> socket_path:string -> t
(Info-goto-node "(elisp)Network Servers")
(describe-function 'make-network-process)
The
t
returned bycreate_unix_network_process
represents listening on the socket. Thet
passed tofilter
represents a specific connection accepted on the socket.
val kill : t -> unit
(Info-goto-node "(elisp)Deleting Processes")
(describe-function 'delete-process)
.
val extend_sentinel : Core_kernel.Source_code_position.t -> t -> (unit, 'a) Defun.Returns.t -> sentinel:(event:string -> 'a) -> unit
(Info-goto-node "(elisp)Sentinels")
Register
sentinel
as a process sentinel for the specified process.sentinel
runs after any other processes sentinels set for that process.