Next: , Previous: Runtime Environment, Up: POSIX


38.7 Processes

— Scheme Procedure: chdir path
— C Function: scm_chdir (path)

Change the current working directory to path.

— Scheme Procedure: getcwd
— C Function: scm_getcwd ()

Return the name of the current working directory.

— Scheme Procedure: umask [mode]
— C Function: scm_umask (mode) |0 |1 |0

If mode is omitted, return a decimal number representing the current file creation mask. Otherwise set the file creation mask to mode and return the previous value.

E.g., (umask #o022) sets the mask to octal 22, decimal 18.

— Scheme Procedure: getpid
— C Function: scm_getpid ()

Return an integer representing the current process ID.

— Scheme Procedure: getgroups
— C Function: scm_getgroups ()

Return a vector of integers representing the current supplementary group IDs.

— Scheme Procedure: getppid
— C Function: scm_getppid ()

Return an integer representing the process ID of the parent process.

— Scheme Procedure: getuid
— C Function: scm_getuid ()

Return an integer representing the current real user ID.

— Scheme Procedure: getgid
— C Function: scm_getgid ()

Return an integer representing the current real group ID.

— Scheme Procedure: geteuid
— C Function: scm_geteuid ()

Return an integer representing the current effective user ID. If the system does not support effective IDs, then return the real ID. (feature? 'EIDs) reports whether the system supports effective IDs.

— Scheme Procedure: getegid
— C Function: scm_getegid ()

Return an integer representing the current effective group ID. If the system does not support effective IDs, then return the real ID. (feature? 'EIDs) reports whether the system supports effective IDs.

— Scheme Procedure: setuid id
— C Function: scm_setuid (id)

Set both the real and effective user IDs to the integer id, provided the process has appropriate privileges.

— Scheme Procedure: setgid id
— C Function: scm_setgid (id)

Set both the real and effective group IDs to the integer id, provided the process has appropriate privileges.

— Scheme Procedure: seteuid id
— C Function: scm_seteuid (id)

Set the effective user ID to the integer id, provided the process has appropriate privileges. If effective IDs are not supported, the real ID is set instead – (feature? 'EIDs) reports whether the system supports effective IDs.

— Scheme Procedure: setegid id
— C Function: scm_setegid (id)

Sets the effective group ID to the integer id, provided the process has appropriate privileges. If effective IDs are not supported, the real ID is set instead – (feature? 'EIDs) reports whether the system supports effective IDs.

— Scheme Procedure: getpgrp
— C Function: scm_getpgrp ()

Return an integer representing the current process group ID. This is the POSIX definition, not BSD.

— Scheme Procedure: setpgid pid pgid
— C Function: scm_setpgid (pid, pgid)

Move the process pid into the process group pgid. pid or pgid must be integers; they can be zero to indicate the ID of the current process. Fail on systems that do not support job control.

— Scheme Procedure: setsid
— C Function: scm_setsid ()

Create a new session. The current process becomes the session leader and is put in a new process group. The process will be detached from its controlling terminal if it has one. The return value is an integer representing the new process group ID.

— Scheme Procedure: waitpid pid [options]
— C Function: scm_waitpid (pid, options) |1 |1 |0

Collect status information from a child process which has terminated or (optionally) stopped. Normally the calling process is suspended until this can be done. If more than one child process is eligible then one will be chosen by the operating system.

The value of pid determines the behaviour:

pid greater than 0
Request status information from the specified child process.
pid equal to -1 or WAIT_ANY
Request status information for any child process.
pid equal to 0 or WAIT_MYPGRP
Request status information for any child process in the current process group.
pid less than -1
Request status information for any child process whose process group ID is -PID.

The options argument, if supplied, should be the bitwise OR of the values of zero or more of the following variables:

— Variable: WNOHANG

Return immediately even if there are no child processes to be collected.

— Variable: WUNTRACED

Report status information for stopped processes as well as terminated processes.

The return value is a pair containing:

  1. The process ID of the child process, or 0 if WNOHANG was specified and no process was collected.
  2. The integer status value.

The following three functions can be used to decode the process status code returned by waitpid.

— Scheme Procedure: status:exit-val status
— C Function: scm_status_exit_val (status)

Return the exit value from status, as would be normally set if a process ended normally through a call to exit or _exit, if any, otherwise #f.

— Scheme Procedure: status:term-sig status
— C Function: scm_status_term_sig (status)

Return the signal number from status which terminated the process, if any, otherwise #f.

— Scheme Procedure: status:stop-sig status
— C Function: scm_status_stop_sig (status)

Return the signal number from status which stopped the process, if any, otherwise #f.

— Scheme Procedure: system [cmd]
— C Function: scm_system (cmd) |0 |1 |0

Execute cmd using the operating system's command processor. Under Unix this is usually the shell /bin/sh. The value returned is cmd's exit status as returned by waitpid.

If called without arguments, return a boolean indicating whether the command processor is available.

— Scheme Procedure: primitive-exit [status]
— C Function: scm_primitive_exit (status) |0 |1 |0

Terminate the current process without unwinding the Scheme stack or flushing ports. This would typically be useful after a fork. The exit status is status (an integer) if supplied, otherwise zero.

— Scheme Procedure: execl filename [args ...]
— C Function: scm_execl (filename, args) |1 |0 |1

Execute the file named by filename as a new process image. The remaining args are supplied to the process; from a C program they are accessable as the argv argument to main. Conventionally the first arg is the same as path. All arguments must be strings.

If args is missing, filename is executed with a null argument list, which may have system-dependent side-effects.

This procedure is currently implemented using the execv system call, but we call it execl because of its Scheme calling interface.

— Scheme Procedure: execlp filename [args ...]
— C Function: scm_execlp (filename, args) |1 |0 |1

Similar to execl, however if filename does not contain a slash then the file to execute will be located by searching the directories listed in the PATH environment variable.

This procedure is currently implemented using the execvp system call, but we call it execlp because of its Scheme calling interface.

— Scheme Procedure: execle filename env [args ...]
— C Function: scm_execle (filename, env, args) |2 |0 |1

Similar to execl, but the environment of the new process is specified by env, which must be a list of strings as returned by the environ procedure.

This procedure is currently implemented using the execve system call, but we call it execle because of its Scheme calling interface.

— Scheme Procedure: primitive-fork
— C Function: scm_fork ()

Create a new child process by duplicating the current parent process. In the child the return value is 0. In the parent the return value is the integer process ID of the child.

This procedure has been renamed from fork to avoid a naming conflict with the scsh fork.

— Scheme Procedure: nice incr
— C Function: scm_nice (incr)

Increment the priority of the current process by incr. A higher priority value means that the process runs less often.