.TH FORK 3am "Jan 15 2013" "Free Software Foundation" "GNU Awk Extension Modules"
.SH NAME
fork, wait, waitpid \- basic process management
.SH SYNOPSIS
.ft CW
@load "fork"
.sp
pid = fork()
.sp
ret = waitpid(pid)
.sp
ret = wait();
.ft R
.SH DESCRIPTION
The
.I fork
extension adds three functions, as follows.
.TP
.B fork()
This function creates a new process. The return value is the zero
in the child and the process-id number of the child in the parent,
or \-1 upon error. In the latter case,
.B ERRNO
indicates the problem.
In the child, \fBPROCINFO["pid"]\fP and \fBPROCINFO["ppid"]\fP
are updated to reflect the correct values.
.TP
.B waitpid()
This function takes a numeric argument, which is the process-id to
wait for. The return value is that of the
.IR waitpid (2)
system call.
.TP
.B wait()
This function waits for the first child to die.
The return value is that of the
.IR wait (2)
system call.
... .SH NOTES
.SH BUGS
There is no corresponding
.B exec()
function.
.PP
The interfaces could be enhanced to provide more facilities,
including pulling out the various bits of the return status.
.SH EXAMPLE
.ft CW
.nf
@load "fork"
\&...
if ((pid = fork()) == 0)
    print "hello from the child"
else
    print "hello from the parent"
.fi
.ft R
.SH "SEE ALSO"
.IR "GAWK: Effective AWK Programming" ,
.IR filefuncs (3am),
.IR fnmatch (3am),
.IR inplace (3am),
.IR ordchr (3am),
.IR readdir (3am),
.IR readfile (3am),
.IR revoutput (3am),
.IR rwarray (3am),
.IR time (3am).
.PP
.IR fork (2),
.IR wait (2),
.IR waitpid (2).
.SH AUTHOR
Arnold Robbins,
.BR arnold@skeeve.com .
.SH COPYING PERMISSIONS
Copyright \(co 2012, 2013,
Free Software Foundation, Inc.
.PP
Permission is granted to make and distribute verbatim copies of
this manual page provided the copyright notice and this permission
notice are preserved on all copies.
.ig
Permission is granted to process this file through troff and print the
results, provided the printed document carries copying permission
notice identical to this one except for the removal of this paragraph
(this paragraph not being relevant to the printed manual page).
..
.PP
Permission is granted to copy and distribute modified versions of this
manual page under the conditions for verbatim copying, provided that
the entire resulting derived work is distributed under the terms of a
permission notice identical to this one.
.PP
Permission is granted to copy and distribute translations of this
manual page into another language, under the above conditions for
modified versions, except that this permission notice may be stated in
a translation approved by the Foundation.
