执行我有一个类似的代码:`叉()`儿子以相反的顺序
for (i = 0; i < 3; i++)
{
pid = fork();
if (pid == 0)
{
son_function();
}
if (pid < 0)
{
exit(1);
}
}
void son_function(void)
{
printf("my pid=%d\n", getpid());
printf("%d: alpha\n", getpid());
printf("%d: beta\n", getpid());
printf("%d: charlie\n", getpid());
exit(0);
}
出于某种原因,我无法理解,的son_function()
执行的顺序是相反的顺序。我的意思是son_function()
正在打印从最大到最小的PID
数字。
另一件令我感到不可思议的事情是,每个儿子的印花都会一个接一个地进行,两个不同的印花工序将无法同时打印到屏幕上。
样品可以在这里看到:http://ideone.com/uBYyRX
'getpid()'返回调用进程的进程ID。你不应该期望_variable_'pid'和函数'getpid()'之间有任何关联。 – ryyker 2014-12-06 01:33:41
@ryyke,我不是在寻找关联,我正在寻找执行顺序中的某种意义。为什么最先打印出'PID'最高的儿子? – Quaker 2014-12-06 01:35:26
使用_pid_数组,即'pid_t pid [3];'。然后通过查看唯一元素(pid [0],...)来追踪它们。 – ryyker 2014-12-06 01:40:04