The procedures described in this section control the creation of processes
and the execution of programs.
They are in the structures posix-process
and posix
.
Fork
creates a new child process and returns the child's process-id in
the parent and #f
in the child.
Fork-and-forget
calls thunk
in a new process; no process-id
is returned.
Fork-and-forget
uses an intermediate process to avoid creating
a zombie process.
(process-id? x) -> boolean
(process-id=? process-id0 process-id1) -> boolean
(process-id->integer process-id) -> integer
(integer->process-id integer) -> process-id
Process-id?
is a predicate for process-ids,
process-id=?
compares two to see if they are the same,
and process-id-uid
returns the actual Unix id.
Process-id->integer
and integer->process-id
convert process ids to and from integers.
(process-id-exit-status process-id) -> integer or #f
(process-id-terminating-signal process-id) -> signal or #f
(wait-for-child-process process-id)
process-id-exit-status
will return its exit status.
If the process is still running or was terminated by a signal then
process-id-exit-status
will return #f
.
Similarly, if a child process was terminated by a signal
process-id-terminating-signal
will return that signal and
will return #f
if the process is still running or terminated
normally.
Wait-for-child-process
blocks until the child process terminates.
Scheme 48 may reap child processes before the user requests their
exit status, but it does not always do so.
Terminates the current process with the integer status
as its exit status.
(exec program-name arg0 ...)
(exec-with-environment program-name env arg0 ...)
(exec-file filename arg0 ...)
(exec-file-with-environment filename env arg0 ...)
(exec-with-alias name lookup? maybe-env arguments)
Exec
and exec-with-environment
look up the new program in the search path,
while exec-file
and exec-file-with-environment
execute a particular file.
The environment is either inherited from the current process
(exec
and exec-file
) or given as an argument
(...-with-environment
).
Program-name
and filename
and any argi
should be strings.
Env
should be a list of strings of the form
"name
=value
"
.
The first four procedures add their first argument, program-name
or
filename
, before the arg0 ...
arguments.
Exec-with-alias
is an omnibus procedure that subsumes the other
four.
Name
is looked up in the search path if lookup?
is true
and is used as a filename otherwise.
Maybe-env
is either a list of strings for the environment of the
new program or #f
in which case the new program inherits its
environment from the current one.
Arguments
should be a list of strings; unlike with the other four
procedures, name
is not added to this list (hence -with-alias
).
Previous: Access to POSIX | Next: Signals