当前位置:  技术问答>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?



|
==的优先级高于=

if(pid=fork()   ==   -1)
这一句,如果fork成功,pid永远等于0,这是因为fork() == -1的结果是0. 所以父进程和子进程都会执行下面那句printf

if(pid=fork()   ==   0)
这一句呢,对于子进程,pid等于1,父进程,pid等于0,所以都会打出来

解决方法,看楼上

|
注意 = 和 ==号的优先级啥,if里加个括号才对

|
正确答案已经公布了。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 做了一个简单的server,里面使用fork()创建子进程,但是导致不能通信,大家谁知道是怎么回事。
  • 奇怪:程序一fork子进程时就停住了,似乎根本不能fork子进程啊?
  • unix中的fork2与fork有设么区别?
  • 还是有关fork的问题,fork在一个函数中调用,我被搞胡涂了
  • 程序在fork前申请了内存若干,在fork后子进程是否需要释放父进程之前申请的内存
  • fork()函数入门级问题:fork()与进程数
  • 一个fork的问题
  • 新手的问题关于fork?
  • 如何理解fork函数返回2次啊?
  • 急于明白Fork的用法.请提供中文解释.谢谢.
  • 关于fork的不解
  • 弱弱的问:fork和exec的区别是什么?
  • 关于fork的讨论
  • 关于fork的疑问?
  • fork之后的输出
  • fork() 父子进程执行顺序问题
  • 关于fork创建进程的一个问题
  • exit和fork是什么关系?他们是怎么配合使用的?
  • fork函数,在线等待,马上结贴。谢谢!!!!!!!!!!!!
  • fork的问题
  • 请教 linux的fork从什么版本开始支持COW?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3