xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/fork.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier #include "lib.h"
23e12c5d1SDavid du Colombier #include <errno.h>
33e12c5d1SDavid du Colombier #include <unistd.h>
43e12c5d1SDavid du Colombier #include "sys9.h"
53e12c5d1SDavid du Colombier 
63e12c5d1SDavid du Colombier pid_t
fork(void)73e12c5d1SDavid du Colombier fork(void)
83e12c5d1SDavid du Colombier {
93e12c5d1SDavid du Colombier 	int n;
103e12c5d1SDavid du Colombier 
11*219b2ee8SDavid du Colombier 	n = _RFORK(RFENVG|RFFDG|RFPROC);
123e12c5d1SDavid du Colombier 	if(n < 0)
133e12c5d1SDavid du Colombier 		_syserrno();
143e12c5d1SDavid du Colombier 	if(n == 0) {
15*219b2ee8SDavid du Colombier 		_detachbuf();
163e12c5d1SDavid du Colombier 		_sessleader = 0;
173e12c5d1SDavid du Colombier 	}
183e12c5d1SDavid du Colombier 	return n;
193e12c5d1SDavid du Colombier }
20