我對fork()系統調用有這些愚蠢的懷疑, 如果有人請回答這些問題,我將不勝感激。linux中的fork()系統調用
- 是否叉()系統調用返回一個整數?如果是,那麼爲什麼當
執行fork()系統調用時,我們將其值設爲pid_t?
我們不能只寫int x = fork();
對於EG-
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
int main()
{
pid_t pid;
pid=fork();
if(pid==0)
{
printf("Child Process");
}
else if(pid>0)
{
printf("Parent Process");
}
else
{
printf("Unable to create");
}
}
- 爲什麼我們正在執行PID =叉(),而INT X =叉()?
- 上面的程序給出了一個輸出 - Parent ProcessChild Process爲什麼它 首先執行父進程而不是子進程?
我曾嘗試這個代碼 -
#include<stdio.h>
int main()
{
int x;
x=fork();
if(x==0)
{
printf("Child Process");
}
else if(x>0)
{
printf("Parent Process");
}
else
{
printf("Unable to create");
}
}
- 我試圖收集叉的()中的整數變量 在Ubuntu 15.04的gcc編譯的值和其工作正常,未示出 任何錯誤,並給出與上述程序 給予相同的結果。
- 它是編譯器問題還是這個代碼罰款? 即使我沒有給頭文件sys/types.h和unistd.h,仍然不是 顯示任何錯誤。
有人可以 請回答我的問題嗎?
你讀了幾遍* fork [2]的文檔(http://man7.org/linux/man-pages/man2/fork.2.html)?你讀過一本好的Linux或POSIX編程書嗎?請參閱參考資料[here](http://stackoverflow.com/a/11681845/841108) –
您應該使用[fflush(3)](http://man7.org/linux/man-pages/man3/fflush.3 .html),因爲I/O被緩衝,你應該用'gcc -Wall -Wextra -g'編譯 –
@ BasileStarynkevitch-如果我先輸入錯誤的代碼,然後輸入錯誤的代碼,是否需要緩衝?嘗試了錯誤的代碼。 –