執行我有一個類似的代碼:`叉()`兒子以相反的順序
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