Node.ChildProcess
- Package
- purescript-node-child-process
- Repository
- purescript-node/purescript-node-child-process
This module contains various types and functions to allow you to spawn and interact with child processes.
It is intended to be imported qualified, as follows:
import Node.ChildProcess (ChildProcess, CHILD_PROCESS)
import Node.ChildProcess as ChildProcess
The Node.js documentation forms the basis for this module and has in-depth documentation about runtime behaviour.
#ChildProcess Source
newtype ChildProcessOpaque type returned by spawn, fork and exec.
Needed as input for most methods in this module.
#stdin Source
stdin :: ChildProcess -> Writable ()The standard input stream of a child process. Note that this is only available if the process was spawned with the stdin option set to "pipe".
#stdout Source
stdout :: ChildProcess -> Readable ()The standard output stream of a child process. Note that this is only available if the process was spawned with the stdout option set to "pipe".
#stderr Source
stderr :: ChildProcess -> Readable ()The standard error stream of a child process. Note that this is only available if the process was spawned with the stderr option set to "pipe".
#pid Source
pid :: ChildProcess -> PidThe process ID of a child process. Note that if the process has already exited, another process may have taken the same ID, so be careful!
#connected Source
connected :: ChildProcess -> Effect BooleanIndicates whether it is still possible to send and receive messages from the child process.
#kill Source
kill :: Signal -> ChildProcess -> Effect UnitSend a signal to a child process. In the same way as the unix kill(2) system call, sending a signal to a child process won't necessarily kill it.
The resulting effects of this function depend on the process
and the signal. They can vary from system to system.
The child process might emit an "error" event if the signal
could not be delivered.
#send Source
send :: forall props. Record props -> Handle -> ChildProcess -> Effect BooleanSend messages to the (nodejs) child process.
See the node documentation for in-depth documentation.
#disconnect Source
disconnect :: ChildProcess -> Effect UnitCloses the IPC channel between parent and child.
#toStandardError Source
toStandardError :: Error -> ErrorConvert a ChildProcess.Error to a standard Error, which can then be thrown inside an Effect or Aff computation (for example).
#onDisconnect Source
onDisconnect :: ChildProcess -> Effect Unit -> Effect UnitHandle the "disconnect" signal.
#spawn Source
spawn :: String -> Array String -> SpawnOptions -> Effect ChildProcessSpawn a child process. Note that, in the event that a child process could
not be spawned (for example, if the executable was not found) this will
not throw an error. Instead, the ChildProcess will be created anyway,
but it will immediately emit an 'error' event.
#defaultSpawnOptions Source
defaultSpawnOptions :: SpawnOptionsA default set of SpawnOptions. Everything is set to Nothing,
detached is false and stdio is ChildProcess.pipe.
#exec Source
exec :: String -> ExecOptions -> (ExecResult -> Effect Unit) -> Effect ChildProcessSimilar to spawn, except that this variant will:
- run the given command with the shell,
- buffer output, and wait until the process has exited before calling the callback.
Note that the child process will be killed if the amount of output exceeds a certain threshold (the default is defined by Node.js).
#execFile Source
execFile :: String -> Array String -> ExecOptions -> (ExecResult -> Effect Unit) -> Effect ChildProcessLike exec, except instead of using a shell, it passes the arguments
directly to the specified command.
#ExecResult Source
type ExecResult = { error :: Maybe Error, stderr :: Buffer, stdout :: Buffer }The combined output of a process calld with exec.
#defaultExecOptions Source
defaultExecOptions :: ExecOptionsA default set of ExecOptions. Everything is set to Nothing.
#execSync Source
execSync :: String -> ExecSyncOptions -> Effect BufferGenerally identical to exec, with the exception that
the method will not return until the child process has fully closed.
Returns: The stdout from the command.
#execFileSync Source
execFileSync :: String -> Array String -> ExecSyncOptions -> Effect BufferGenerally identical to execFile, with the exception that
the method will not return until the child process has fully closed.
Returns: The stdout from the command.
#StdIOBehaviour Source
data StdIOBehaviourBehaviour for standard IO streams (eg, standard input, standard output) of a child process.
Pipe: creates a pipe between the child and parent process, which can then be accessed as aStreamvia thestdin,stdout, orstderrfunctions.Ignore: ignore this stream. This will cause Node to open /dev/null and connect it to the stream.ShareStream: Connect the supplied stream to the corresponding file descriptor in the child.ShareFD: Connect the supplied file descriptor (which should be open in the parent) to the corresponding file descriptor in the child.
Constructors
#pipe Source
pipe :: Array (Maybe StdIOBehaviour)Create pipes for each of the three standard IO streams.
- Modules
- Node.
ChildProcess