自己测试写了一个程序:
#include <iostream>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main(){
cout << "son/parent\tppid\tpid\tspid"<<endl;
pid_t spid = fork();
if (spid<0) cout << "error" <<endl;
else if (spid!=0) cout << "\t" << "parent" << "\t" << getppid() << "\t" << getpid() << "\t" << spid << endl;
else {
cout << "\t" << "son" << "\t" << getppid() << "\t" << getpid() << "\t" << spid << endl;
}
return 0;
}
执行结果如下:
son/parent ppid pid spid
parent 32278 32343 32344
son 1 32344 0
问题:fork() 后,产生的子进程的父进程的 pid 为什么是 1?我感觉应该是 32343 啊。。。求解释。