- fork函数的作用
复制当前进程
- fork函数会产生和当前进程完全一样的新进程,并和当前进程一样从fork函数返回
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
pid_t pid;
pid = fork();
if (pid < 0)
{
printf("fork failed!\n");
exit(-1);
}
else if (pid == 0)
{
printf("I am child, pid = [%d], parent pid=[%d]\n", getpid(), getppid());
exit(0);
}
else
printf("I am parent, pid = [%d]\n", getpid());
wait(NULL);
exit(0);
}
- fork产生新进程的速度非常快,因为fork并不复制原进程的内存空间,而是和原进程共享一个写时复制的内存空间。所谓写时复制,指的是两个进程可以同时自由的读取内存,但任意进程试图对内存进行修改时,内存就会复制一份提供给修改方单独使用,以免影响到其他进程的使用。