当前位置: 技术问答>linux和unix
关于fork():细微差别的写法导致不一样的结果,大家帮看看。
来源: 互联网 发布时间:2016-03-05
本文导语: 第一种: int main() { if(pid=fork() == -1) printf("create son pid errorn"); if(pid== 0) printf("in the child process--%dn",pid); else printf("in the FATHER process----%dn",pid); return 0; } 输出结果:in the ch...
第一种:
int main()
{
if(pid=fork() == -1)
printf("create son pid errorn");
if(pid== 0)
printf("in the child process--%dn",pid);
else
printf("in the FATHER process----%dn",pid);
return 0;
}
输出结果:in the child process--0
in the child process--0
第二种:int main()
{
if(pid=fork() == 0)
printf("in the child process--%dn",pid);
else
printf("in the FATHER process----%dn",pid);
return 0;
}输出结果:in the child process--1
in the FATHER process----0
疑问1:
为什么先fork后if分支判断,只有child进程的输出?
疑问2:
为什么同样是child进程,一个pid号码是0,另一个是1?
int main()
{
if(pid=fork() == -1)
printf("create son pid errorn");
if(pid== 0)
printf("in the child process--%dn",pid);
else
printf("in the FATHER process----%dn",pid);
return 0;
}
输出结果:in the child process--0
in the child process--0
第二种:int main()
{
if(pid=fork() == 0)
printf("in the child process--%dn",pid);
else
printf("in the FATHER process----%dn",pid);
return 0;
}输出结果:in the child process--1
in the FATHER process----0
疑问1:
为什么先fork后if分支判断,只有child进程的输出?
疑问2:
为什么同样是child进程,一个pid号码是0,另一个是1?
|
==的优先级高于=
if(pid=fork() == -1)
这一句,如果fork成功,pid永远等于0,这是因为fork() == -1的结果是0. 所以父进程和子进程都会执行下面那句printf
if(pid=fork() == 0)
这一句呢,对于子进程,pid等于1,父进程,pid等于0,所以都会打出来
解决方法,看楼上
if(pid=fork() == -1)
这一句,如果fork成功,pid永远等于0,这是因为fork() == -1的结果是0. 所以父进程和子进程都会执行下面那句printf
if(pid=fork() == 0)
这一句呢,对于子进程,pid等于1,父进程,pid等于0,所以都会打出来
解决方法,看楼上
|
注意 = 和 ==号的优先级啥,if里加个括号才对
|
正确答案已经公布了。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。