下面的代码片段也由子进程运行,但我不知道为什么,因为在我的理解中,子进程的Pid应该总是为0,所以它没有理由在下面做任何事情,除了打印"I am child"
pid_t child_Pid1 = fork();
if((int)getpid() == 0) {
printf("I am childn");
} else {
printf("I am parentn");
}
getpid()
总是返回当前进程的pid,该pid永远不会为零,因此在您当前的代码中,两个进程都不执行execlp
。
你想看child_Pid1
而不是getpid()
。在子节点中,它返回0而不是子进程的pid。