fork()是什么?
fork()是Linux系统中的分叉函数,我们可以把它想象成一个倒立的叉子。它通过系统调用创建一个与原来进程几乎完全相同的进程。一个进程调用fork()后,创建一个子进程,它拥有父进程完全一样的代码和数据,相当于父进程的一个克隆。
fork()的特点
子进程与父进程相互独立。
一次调用,两次返回。
若返回值为0,则为子进程;若返回值不为0,则它是父进程。负值则表示出错。
fork()函数示例
/*
* forks.c - Examples of Unix process control
*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <signal.h>
/*
* fork0 - The simplest fork example
* Call once, return twice
* Creates child that is identical to parent
* Returns 0 to child process
* Returns child PID to parent process
*/
void fork0()
{
if (fork() == 0) {
printf("Hello from child\n");
}
else {
pri