linux使用fork来生成一个子进程,fork()
函数的返回值。如果创建失败,将得到 -1;如果创建成功,在父进程中将得到子进程的 PID,在子进程中将得到 0
如果在 fork()
函数之后用一个 if
语句对 fork()
函数的返回值进行判断,子进程和父进程将进入不同的分支。
#include <stdlib.h>
#include <sys/types.h>
#include <sys/time.h>
int main()
{
int a = 1;
pid_t pid;
pid = fork();
if (pid == 0) {
/* child task */
a++;
printf("Hello, child: a=%d\n", a);
sleep(5);
exit(0);
} else {
/* parent task */
sleep(3);
printf("Hello, parent: a=%d\n", a);
}
return 0;
}
注:fork之后,子进程和父进程,一开始得到的资源是一样的,但是之后相互独立。子进程修改a后,父进程是得不到。