我对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-如果我先输入错误的代码,然后输入错误的代码,是否需要缓冲?尝试了错误的代码。 –