17.7.3 Interface to fork(), wait(), and waitpid()

The fork extension adds three functions, as follows:

@load "fork"

This is how you load the extension.

pid = fork()

This function creates a new process. The return value is zero in the child and the process ID number of the child in the parent, or −1 upon error. In the latter case, ERRNO indicates the problem. In the child, PROCINFO["pid"] and PROCINFO["ppid"] are updated to reflect the correct values.

ret = waitpid(pid)

This function takes a numeric argument, which is the process ID to wait for. The return value is that of the waitpid() system call.

ret = wait()

This function waits for the first child to die. The return value is that of the wait() system call.

There is no corresponding exec() function.

Here is an example:

@load "fork"
...
if ((pid = fork()) == 0)
    print "hello from the child"
else
    print "hello from the parent"