Chinaunix

标题: linux c fork的问题 [打印本页]

作者: c513636054    时间: 2010-12-01 09:33
标题: linux c fork的问题
int main(void)
{
   int pid=0;

   printf("======>[%d]\n", getpid() );

   while( pid = ( fork() < 0 ) );

   printf("------>[%d]\n", getpid() );
   printf("pid = [%d]\n", pid );

   if ( pid == 0 )
       printf("this's subprocess\n");

   if ( pid > 0 )
       printf( "this's father process\n" );

   return 0;
}

远行结果为:
======>[30962]
------>[30963]
pid = [0]
this's subprocess
pid = [0]
this's subprocess
我的问题是为什么pid的两次返回值都是0?
当 fork函数这样使用的时候它是返回了一次还是两次?
作者: paul_allen    时间: 2010-12-01 10:43
这句错了,
while( pid = ( fork() < 0 ) );

应该是while( (pid =  fork()) < 0 ) );
作者: c513636054    时间: 2010-12-01 10:54
嘿嘿……我知道!两种写法是一个道理
作者: c513636054    时间: 2010-12-01 11:38
我今天犯了个弱智的错误,算数优先级嘿嘿
作者: abackdoor    时间: 2010-12-01 12:50





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2