问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

if((pid1=fork())<0)和if(pid1=fork()<0)有什么区别么?!因为在Linux下这两个条件运行出的结果完全不同

发布网友 发布时间:2022-06-15 09:14

我来回答

4个回答

热心网友 时间:2023-11-15 09:16

C语言中的运算符是有优先级的。
赋值运算符“=”的级别最低。

fork()函数的返回值有三种情形:
负数:如果出错,则fork()返回-1,此时没有创建新的进程。最初的进程仍然运行。
零:在子进程中,fork()返回0
正数:在负进程中,fork()返回正的子进程的PID

if((pid1=fork())<0)的意思是:执行fork()创建进程,并把返回值赋给pid1;
(1)如果fork()返回负数,也就是创建进程失败,则表达式((pid1=fork())<0)为真,pid = -1,从而会执行后面的语句;
(2)如果返回值为正数或者0,也就是进程创建成功,pid1 >= 0,则不执行后边的语句。

if(pid1=fork()<0)的意思是:执行fork()创建进程,把逻辑表达式fork()<0的值赋给pid1,
(1)如果它的返回值为负数,也就是创建进程失败,则表达式(pid1=fork()<0)为真,pid1 = 1,从而会执行后面的语句;(在if语句中,应该不会直接用pid1作处理的,但else语句中,一般会对pid1进行判断,子进程和父进程分别进行不同的操作,但pid1已经不表示子进程号,从而出错。)
(2)如果fork()返回值为正数或者0,那么表达式为假,pid1 = 0,从而不会执行后边的语句。(此时,情况同上面讲的else分支的情况,即从逻辑上看认为已经创建子进程成功了,而pid1却不是表示子进程号,而是0,从而代码出现错误)

从上面的分析可以看出:
(1)fork()执行成功,则无论是子进程还是父进程都会执行If后面的语句;如果fork()执行失败,则原有进程都不会执行if后面的语句。所以,从逻辑分支的选择上看,二者是等效的。
(2)但pid1 的赋值不同。如果if后面的语句或者else后面的语句中,涉及到对pid1的处理,那么,处理结果大相径庭,就不难理解了啊。

热心网友 时间:2023-11-15 09:16

等于号的优先级比小于号的要低。先执行<,再执行=.

热心网友 时间:2023-11-15 09:17

运算符有一个优先顺序。。=与<。。所以运算的结果也就不一样了。

热心网友 时间:2023-11-15 09:18

括号影响了,运算的优先级。所以结果不同。追问能解释得具体一点么,谢谢~
是不是区别在于,有括号,先执行了创建子进程,然后子进程把这句判断也复制过去了?
还是。。。。。

追答对,很明显。先执行括号内的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音弹幕怎么关掉?怎么关闭抖音弹幕? 惠普LaserJet P3005D是否支持B5纸的双面打印? word打印出图片总是缺一部分怎么办-word打印图片不完整怎么解决_百度... 理想one哪里产的车辆? 抚州抚州ONE在哪里? one地址在哪里? 如何在图片上写字(如何在图片上添加文字) 网商贷为什么钱没到账 高级经济师职称怎么评 高级经济师需要评审吗 朋友圈实况图片别人还是实况吗 新的怎么注销掉 我怎么安装不了酷狗音乐是什么原因 为什么我的酷狗不能安装?这是什么意思? 牧场物语怎么使用金手指 牧场物语 矿石镇的伙伴们 GBA 金手指 我把代码输进去了为什么一点用都没??? 如何手动激活长安unit远程控制系统 长安unit音乐怎么登录 长安unit人脸识别可以设置几个 基本不发朋友圈的女孩,是什么性格呢? 怎么永久注销掉 求安全主题班会 ppt 急需 微信为什么要出win版? wps和微软,不能兼容吗,怎么我的打不开,里面是乱码 新一代因特网”的发展方向是什么?(3个“更”) 降维沟通,向下兼容是什么意思 不用了怎么注销 男生是经常发朋友圈的人,为什么突然变得逐渐少发朋友圈甚至不发朋友圈了? 电脑桌面老跳出数字输入锁定符号,如何去除 代码输入锁定多久能开 if((pid1=fork())&lt;0)和if(pid1=fork()&lt;0)有什么区别吗? 知道哪个进程的pid是1 知道会话是进程组的集合的概念 怎么快速注销 thinkpad t460s 是2k还是触屏 如何关thinkpadt460s屏幕 thinkpad x1 carbon 2016 t460s 屏幕哪个好 怎么永久注销 ps4为什么不向下兼容 重制版到底是好是坏 为什么XBOX ONE向下兼容不支持这几类游戏 安卓5.0为何不向下兼容?导致很多之前的优秀软件无法打开 苹果air笔记本专用的office2010向下不兼容吗 multisim向下不兼容吗? tmsi解锁稳定吗 4223球机摄像头的风扇声音大正常吗 电信tmsi解锁为什么相对稳定 淘宝订单售后显示发货未超时什么意思 被限制登录,一般要多久才能自动解除? 初次申领驾驶证多少年 T460s I5-6200U 多大的内存能发挥最大的性能 打芒果控销多少个小时才有较