[C语言] fork函数返回问题

[复制链接]
772|8
 楼主| yanghelovehuang 发表于 2018-6-28 09:39 | 显示全部楼层 |阅读模式
各位大虾,我写了个函数结构是这样的:
if(pid = fork() < 0)
{}
else if(pid == 0)
{printf("pid is %d\n", getpid());}
else
{}
编译完运行程序,else里的程序没执行,然而子进程printf却打印了两次pid号而且pid号还不一样,这是为什么啊
chongdongchen 发表于 2018-6-28 09:52 | 显示全部楼层
注意优先级
 楼主| yanghelovehuang 发表于 2018-6-29 10:17 | 显示全部楼层

什么优先级啊 fork这个函数在不同的系统中,父子进程的执行顺序也是不同的,而且为啥会打印两次子进程的内容啊
chongdongchen 发表于 2018-6-29 10:36 | 显示全部楼层
yanghelovehuang 发表于 2018-6-29 10:17
什么优先级啊 fork这个函数在不同的系统中,父子进程的执行顺序也是不同的,而且为啥会打印两次子进程的 ...

第一行的 = 和 <,不加括号容易出错,当然也有可能你是故意这样写的
 楼主| yanghelovehuang 发表于 2018-6-29 14:11 | 显示全部楼层

哦明白了,是符号优先级啊,谢谢大神,是这个问题,<的优先级大于= 那if(pid = fork() < 0)是不是就可以这么解释了:把fork返回的小于0的值赋给pid,那pid应该没值啊,为什么会执行pid == 0的程序呢?还两次
chongdongchen 发表于 2018-6-29 14:21 | 显示全部楼层
yanghelovehuang 发表于 2018-6-29 14:11
哦明白了,是符号优先级啊,谢谢大神,是这个问题,

fork() < 0 的结果只会是True 和 false(!0和0),所以pid = !0 或 0
 楼主| yanghelovehuang 发表于 2018-6-29 15:19 | 显示全部楼层
chongdongchen 发表于 2018-6-29 14:21
fork() < 0 的结果只会是True 和 false(!0和0),所以pid = !0 或 0

嗯嗯 了解了 谢谢大神 不知道您对 socket了解不 我还有个问题 您看下:https://bbs.21ic.com/icview-2524672-1-1.html
chongdongchen 发表于 2018-6-29 15:36 | 显示全部楼层
yanghelovehuang 发表于 2018-6-29 15:19
嗯嗯 了解了 谢谢大神 不知道您对 socket了解不 我还有个问题 您看下:https://bbs.21ic.com/icview-25246 ...

不敢当,这个我帮不了你哦
 楼主| yanghelovehuang 发表于 2018-6-29 15:58 | 显示全部楼层
chongdongchen 发表于 2018-6-29 15:36
不敢当,这个我帮不了你哦

嗯嗯 没事 谢谢啊大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

156

主题

324

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部