c语言调用函数while((p1=fork())==-1)是什么意思

 我来答
象思义裔芳
2019-08-27 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:35%
帮助的人:569万
展开全部
fork函数是在当前进程中新建立一个子进程,如果这个创建子进程失败,那么返回-1,这个实际是把创建进程的返回值和-1比较看看是否创建失败。
因为是写在while语句里,那么当创建失败之后,如果在while里面没有break或者跳出,当while执行体执行结束后又会执行(p1=fork())==-1,等于不断重复创建子进程一直到创建成功为止。
注意这里会返回两次,因为父进程创建子进程的时候复制了父进程的地址空间,那么父子进程地址空间的语句执行都在等待fork返回的那句话里。
所以返回两次是父进程返回一个,返回的是子进程的ID,子进程返回一次,返回的是0.
那么我们根据不同的返回值就可以分别写出我们想要的父子进程的逻辑。
#include
#include
#include
int
main()
{
int
p
=
-1;
while
(
(p
=
fork())
==
-1
)
{
std::cout
<<
"create
process
failed!"
<<
std::endl;
}
if
(p
==
0)
{
std::cout
<<
"this
is
in
the
child
process!"
<<
std::endl;
}
esle
{
std::cout
<<
"this
is
in
the
father
process!"
<<
std::endl;
}
}
容子芸问冬
2019-04-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:30%
帮助的人:549万
展开全部
c语言调用函数while((p1=fork())==-1)的意思是:
  fork函数是在当前进程中新建立一个子进程,如果这个创建子进程失败,那么返回-1,这个实际是把创建进程的返回值和-1比较看看是否创建失败。
  因为是写在while语句里,那么当创建失败之后,如果在while里面没有break或者跳出,当while执行体执行结束后又会执行(p1=fork())==-1,等于不断重复创建子进程一直到创建成功为止。
  注意这里会返回两次,因为父进程创建子进程的时候复制了父进程的地址空间,那么父子进程地址空间的语句执行都在等待fork返回的那句话里。
  所以返回两次是父进程返回一个,返回的是子进程的ID,子进程返回一次,返回的是0.
  那么我们根据不同的返回值就可以分别写出我们想要的父子进程的逻辑。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敖彭薄剧骄
2020-04-07 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:32%
帮助的人:870万
展开全部
fork()应该是一个不带参数,返回一个int型数据的函数吧,
while((p1=fork())==-1);的意思是:
调用fork()函数,将返回值交给p1,然后判断p1是否等于-1;
看到这个我想到了,输入多个字符时吸收换行符的办法:
while((ch=getchar())!='\n');
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式