.TH FORK2 2 .SH NAME fork2 \- start a new process from inside the current application .SH SYNOPSIS #include .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.