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秒结果会不同) 展开
#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秒结果会不同) 展开
1个回答
展开全部
因为FORK创建子进程后,父进程并没有等待子进程退出,而是继续执行,SLEEP(10),就是10秒后,父进程继续工作。
程序应该是这样的
fork -> ls -l-> 10s->ping www.abc.com
ls -l 是子进程工作
ping 是父进程在休眠10秒后工作的
程序应该是这样的
fork -> ls -l-> 10s->ping www.abc.com
ls -l 是子进程工作
ping 是父进程在休眠10秒后工作的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询