0
所以我在修改期間看到了下面的代碼。我知道wait()會導致父母等待孩子停下來,但我對此有幾個問題。wait()系統調用 - 孩子是否忽略這個?
首先,當孩子被創建時,我的假設是否糾正父繼續,更改x值,然後在if語句後等待?
其次,當孩子進行執行並等待()時,會發生什麼?這是因爲它沒有什麼可等待而被忽略?
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main() {
int x = 1;
pid_t pid = fork();
if (pid == 0) {
x = x * 2;
} else if (pid > 0) {
x = 3;
}
wait();
// Print the value of x to the console
printf("%d\n",x);
}
你試過了嗎?該程序似乎是掛起(關於你的第二個問題)? – 2013-04-20 00:39:32
是的(關於你的第一個問題)。 – 2013-04-20 00:49:48
['wait()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/wait.html)的聲明是'pid_t wait(int * stat_loc)',並且它被允許通過0或NULL代替指針,你必須傳遞一些東西作爲參數。當然,你需要'#include'包含在編譯器中才能警告你 - 但你不應該編譯代碼,以便你可以在範圍內使用沒有原型的函數。在當前的POSIX系統中,你不需要'#include '(它自動包含;它在原來的POSIX-1988,1990中是必需的)。 –
2013-04-20 02:20:06