fork函数

fork函数的作用是创建一个新进程,其原型为:
pid_t fork(void);
要使用fork函数必须包含#include

fork函数调用一次返回两次,子进程的返回0,父进程的返回子进程的pid,Linux下调用fork函数后。子进程和父进程之间的数据共享方式是写时复制。

看源代码:

#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main(int argc, char* argv[]) { pid_t pid; printf("father process id is %d/n", getpid()); pid=fork(); if(pid<0) { perror("fork error "); exit(1); } else if( 0==pid) { printf("in child process:/n"); printf("child process id is %d/n", getpid()); printf("father process id is %d/n", getppid()); } else { printf("in fater process/n"); printf("child process id is %d/n", pid); } wait(NULL); exit(0); }

多运行几次,注意子进程里面printf("father process id is %d/n", getppid());这句输出的内容,如果main函数先行结束,那么就输出为1,否则输出为main函数进程的PID。

这说明当main函数先结束后,子进程将由init进程接管。

你可能感兴趣的:(fork函数)