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後,父進程是得不到。