gno/usr.man/man2/fork2.2

72 lines
1.5 KiB
Groff

.TH FORK2 2
.SH NAME
fork2 \- start a new process from inside the current application
.SH SYNOPSIS
#include <unistd.h>
.sp 1
int
.BR fork2
.RI " (void *" proc ,
word
.IR stack ,
word
.IR prio ", char *" procname ,
word
.IR numargs ", ...);"
.SH DESCRIPTION
.B fork2
is similar to
.BR fork (2),
except that it allows more parameters to be passed than just function
which the child process will execute.
.LP
.I proc
is the name of the function at which the child process will begin execution.
.I stack
is the number of bytes of stack to allocate to the proess. If
.I stack
is not a multiple of 256, then it
is rounded up to the next highest multiple of 256 bytes.
.I prio
is the priority to assign to the process. Priorities are not currently
implemented, and you should pass 0 for this argument.
.I procname
is a string you can have associated with the process when viewing
the process table (See
.BR ps (1)).
.I numargs
is the number of
.B words
of arguments which follow, not the
number of arguments.
Any arguments following
.I numargs
are passed as parameters to the child's procedure.
.SH EXAMPLE
.nf
int main (int argc, char **argv) {
...
pid = fork2(proc1,1024,0,"sub-process",3,argc,argv);
...
return 0;
}
void proc1(int argc, char *argv[])
{
...
}
.fi
.SH "RETURN VALUE"
.BR fork2
returns to the parent the process ID of the new process on success.
On failure, -1 is returned and
.B errno
is set.
.SH HISTORY
.B fork2
first appeared in XINU.