C standard library :: unistd
fork - kreer en ny process
pid_t fork(void)
Denne funktion kreerer en ny process. Den nye process (child process) vil være en eksakt kopi af den kalendes process (parent process) undtagen som beskrevet nedenstående.
- Child processen får et unik process ID.
- Child processens ID vil heller ikke matche nogen aktiv group ID.
- Child processen får et andet parent process ID, som vil være process ID for den kalende process.
- Child processen for sin egen kopi af parent's file descriptors. Hver af child's file descriptors refererer til den samme åbne file descriptor med den korresponderende file descriptor af parent.
- Child processen får sin egen kopi af parent's åbne directory streams. Hver åben directory stream i child processen kan dele directory stream positionering med det korrenponderende directory stream af parent.
- Child processens værdier for tms_utime, tms_stime, tms_cutime og tms_cstime bliver sat til 0.
- Tiden til en evt. alarm clock signal bliver nulstillet til 0 og alarmen, hvis nogen, bliver annuleret.
- Fil locks sat af parent processen bliver ikke arvet til child processen.
- Ventende signaler annuleres.
Efter fork vil både parent og child processerne være i stand til at eksekvere uafhængigt af hinanden indtil en af dem terminerer.
Return værdi
Ved fuldbyrdelsen, skal fork() returnere 0 til child processen og returnere process ID på child processen til parent processen. Begge processer vil vedblive at eksekvere fra fork() funktionen. Modsat, -1 returneres til parent processen og ingen child process vil kreeres, errno vil blive sat som indikation af fejlen.