linux c编程问题

#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>intmain(){p... #include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
int main()
{
pid_t result;
result=fork();
int newret;
if(result==-1){
perror("创新子进程失败");
exit(0);
}
else if(result==0){
printf("返回值是:%d,这是子进程%d\n",result,getpid());
newret=system("ls -l");
}
else{
sleep(10);
printf("返回值是:%d,这是父进程%d\n",result,getpid());
newret=system("ping www.abc.com");
}
}

课本上的问题:为什么用sleep等待10秒钟?
(上机验证过没有sleep 10秒结果会不同)
展开
 我来答
湘北丫墓已1s
2009-12-15 · 超过10用户采纳过TA的回答
知道答主
回答量:28
采纳率:0%
帮助的人:0
展开全部
因为FORK创建子进程后,父进程并没有等待子进程退出,而是继续执行,SLEEP(10),就是10秒后,父进程继续工作。
程序应该是这样的
fork -> ls -l-> 10s->ping www.abc.com
ls -l 是子进程工作
ping 是父进程在休眠10秒后工作的
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式