【发布时间】:2014-03-12 18:21:05
【问题描述】:
我有以下功能:
void test_fork()
{
pid_t id;
printf("Parent process id: %d\n", getpid());
id = fork();
if (id == 0)
printf("\nChild:");
else if (id > 0)
printf("\nParent:");
else
exit(EXIT_FAILURE);
printf("\nprocess id: %d\n", getpid());
printf("parent process id: %d\n", getppid());
}
我的怀疑与它的输出有关,特别是有时我有例如以下简单的输出:
Parent process id: 879
Parent:
process id: 879
parent process id: 878
Child:
process id: 881
parent process id: 879
最后一个 id 等于其父 id (正如预期的那样)。
但有时输出例如:
Parent process id: 858
Parent:
process id: 858
parent process id: 857
Child:
process id: 860
parent process id: 1
最后一个id不等于它的父进程id,但等于1(应该是init进程的id)。
这怎么可能?
【问题讨论】: