PREV UP NEXT SCM

5.7: Posix Extensions

If 'posix is provided (by linking in `posix.o'), the following functions are defined:

Function: open-pipe string modes
If the string modes contains an R, returns an input port capable of delivering characters from the standard output of the system command string. Otherwise, returns an output port capable of receiving characters which become the standard input of the system command string. If a pipe cannot be created #f is returned.
Function: open-input-pipe string
Returns an input port capable of delivering characters from the standard output of the system command string. If a pipe cannot be created #f is returned.
Function: open-output-pipe string
Returns an output port capable of receiving characters which become the standard input of the system command string. If a pipe cannot be created #f is returned.
Function: close-port pipe
Closes the pipe, rendering it incapable of delivering or accepting characters. This routine has no effect if the pipe has already been closed. The value returned is unspecified.
Function: pipe
Returns (cons rd wd) where rd and wd are the read and write (port) ends of a pipe respectively.
Function: fork
Creates a copy of the process calling fork. Both processes return from fork, but the calling (parent) process's fork returns the child process's ID whereas the child process's fork returns 0.

For a discussion of IDs See Process Persona.

Function: getppid
Returns the process ID of the parent of the current process. For a process's own ID See getpid.
Function: getuid
Returns the real user ID of this process.
Function: getgid
Returns the real group ID of this process.
Function: getegid
Returns the effective group ID of this process.
Function: geteuid
Returns the effective user ID of this process.
Function: setuid id
Sets the real user ID of this process to id. Returns #t if successful, #f if not.
Function: setgid id
Sets the real group ID of this process to id. Returns #t if successful, #f if not.
Function: setegid id
Sets the effective group ID of this process to id. Returns #t if successful, #f if not.
Function: seteuid id
Sets the effective user ID of this process to id. Returns #t if successful, #f if not.
Function: kill pid sig
The kill function sends the signal signum to the process or process group specified by pid. Besides the signals listed in Standard Signals, signum can also have a value of zero to check the validity of the pid.

The pid specifies the process or process group to receive the signal:

> 0
The process whose identifier is pid.
0
All processes in the same process group as the sender. The sender itself does not receive the signal.
-1
If the process is privileged, send the signal to all processes except for some special system processes. Otherwise, send the signal to all processes with the same effective user ID.
< -1
The process group whose identifier is (abs pid).

A process can send a signal to itself with (kill (getpid) signum). If kill is used by a process to send a signal to itself, and the signal is not blocked, then kill delivers at least one signal (which might be some other pending unblocked signal instead of the signal signum) to that process before it returns.

The return value from kill is zero if the signal can be sent successfully. Otherwise, no signal is sent, and a value of -1 is returned. If pid specifies sending a signal to several processes, kill succeeds if it can send the signal to at least one of them. There's no way you can tell which of the processes got the signal or whether all of them did.

Function: waitpid pid options

The waitpid function suspends execution of the current process until a child as specified by the pid argument has exited, or until a signal is deliverd whose action is to terminate the current process or to call a signal handling function. If a child as requested by pid has already exited by the time of the call (a so-called zombie process), the function returns immediately. Any system resources used by the child are freed.

The value of pid can be one of:

< -1
which means to wait for any child process whose process group ID is equal to the absolute value of
-1
which means to wait for any child process whose process group ID is equal to the (abs pid).
-1
which means to wait for any child process; this is the same behaviour which wait exhibits.
0
which means to wait for any child process whose process group ID is equal to that of the calling process.
> 0
which means to wait for the child whose process ID is equal to the value of pid.

The value of options is one of the following:

  1. Nothing special.
  2. (WNOHANG) which means to return immediately if no child is there to be waited for.
  3. (WUNTRACED) which means to also return for children which are stopped, and whose status has not been reported.
  4. Which means both of the above.

The return value is normally the process ID of the child process whose status is reported. If the WNOHANG option was specified and no child process is waiting to be noticed, the value is zero. A value of #f is returned in case of error and errno is set. For information about the errno codes See Process Completion.

Function: uname
You can use the uname procedure to find out some information about the type of computer your program is running on.

Returns a vector of strings. These strings are:

  1. The name of the operating system in use.
  2. The network name of this particular computer.
  3. The current release level of the operating system implementation.
  4. The current version level within the release of the operating system.
  5. Description of the type of hardware that is in use.

    Some examples are `"i386-ANYTHING"', `"m68k-hp"', `"sparc-sun"', `"m68k-sun"', `"m68k-sony"' and `"mips-dec"'.

Function: getpw name
Function: getpw uid
Function: getpw
Returns a vector of information for the entry for NAME, UID, or the next entry if no argument is given. The information is:
  1. The user's login name.
  2. The encrypted password string.
  3. The user ID number.
  4. The user's default group ID number.
  5. A string typically containing the user's real name, and possibly other information such as a phone number.
  6. The user's home directory, initial working directory, or #f, in which case the interpretation is system-dependent.
  7. The user's default shell, the initial program run when the user logs in, or #f, indicating that the system default should be used.
Function: setpwent #t
Rewinds the pw entry table back to the begining.
Function: setpwent #f
Function: setpwent

Closes the pw table.

Function: getgr name
Function: getgr uid
Function: getgr
Returns a vector of information for the entry for NAME, UID, or the next entry if no argument is given. The information is:
  1. The name of the group.
  2. The encrypted password string.
  3. The group ID number.
  4. A list of (string) names of users in the group.
Function: setgrent #t
Rewinds the group entry table back to the begining.
Function: setgrent #f
Function: setgrent

Closes the group table.

Function: getgroups
Returns a vector of all the supplementary group IDs of the process.
Function: link oldname newname
The link function makes a new link to the existing file named by oldname, under the new name newname.

link returns a value of #t if it is successful and #f on failure.

Function: chown filename owner group
The chown function changes the owner of the file filename to owner, and its group owner to group.

chown returns a value of #t if it is successful and #f on failure.

Function: ttyname port
If port port is associated with a terminal device, returns a string containing the file name of termainal device; otherwise #f.

5.8: Unix Extensions

If 'unix is provided (by linking in `unix.o'), the following functions are defined:

These priveledged and symbolic link functions are not in Posix:

Function: symlink oldname newname
The symlink function makes a symbolic link to oldname named newname.

symlink returns a value of #t if it is successful and #f on failure.

Function: readlink filename
Returns the value of the symbolic link filename or #f for failure.
Function: lstat filename
The lstat function is like stat, except that it does not follow symbolic links. If filename is the name of a symbolic link, lstat returns information about the link itself; otherwise, lstat works like stat. See I/O-Extensions.
Function: nice increment
Increment the priority of the current process by increment. chown returns a value of #t if it is successful and #f on failure.
Function: acct filename
When called with the name of an exisitng file as argument, accounting is turned on, records for each terminating pro-cess are appended to filename as it terminates. An argument of #f causes accounting to be turned off.

acct returns a value of #t if it is successful and #f on failure.

Function: mknod filename mode dev
The mknod function makes a special file with name filename and modes mode for device number dev.

mknod returns a value of #t if it is successful and #f on failure.

Function: sync
sync first commits inodes to buffers, and then buffers to disk. sync() only schedules the writes, so it may return before the actual writing is done. The value returned is unspecified.