gawk: Extension Sample Fork
16.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"