实验3

翻译 2015年11月18日 17:32:13

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <unistd.h>

#include <sys/wait.h>

int main(void)

{

int child1, child2, child;

//创建子进程1

child1 = fork();

if(child1 == -1){//子进程1的出错处理

printf("Child1 fork error\n");

exit(1);

}  

else if(child1 == 0) //fork创建进程返回值为0说明现在是子进程

{

printf("In child1: execute 'ls-l'\n");

if(execlp("ls", "ls","-l", NULL) < 0) //该函数的最后一个参数必须为NULL

{

printf("Child1 execlp error\n");

}

}  

else{

child2 = fork();//在父进程中创建子进程2,然后等待两个子进程的退出

if (child2 == -1){//子进程2的出错处理

printf("Child2 fork error\n");

exit(1);

}

else if(child2 == 0){//在子进程2中使其暂停5s

printf("In child2: sleep for 5seconds and then exit\n");

sleep(5);

exit(0);

}

printf("In father process:\n");

child = waitpid(child1, NULL, 0); /* 阻塞式等待 */

if (child == child1){

printf("Get child1 exitcode\n");

}

else{

printf("Error occured!\n");

}

do{

child = waitpid(child2, NULL, WNOHANG);/* 非阻塞式等待 */

if (child == 0){ //由于子进程2未结束,waitpid()不阻塞而立即返回0,若结束,则返回子进程2的pid:child2,waitpid阻塞

printf("The child2 process has notexited!\n");

sleep(1);

}

} while (child == 0);

if(child == child2){

printf("Get child2 exitcode\n");

}

else{

printf("Error occured!\n");

}

}

exit(0);

}

quot;child1 noticed that child2 has exited");

 

     closelog();//关闭日志服务

     while(1)

     {

        sleep(10);

     }

   }

}

相关文章推荐

MIT 6.828 学习笔记3 Lab1实验报告

Lab1实验报告Exercise 31. At what point does the processor start executing 32-bit code? What exactly caus...

实验吧 ctf 简单的sql注入3

ctf题 现在自己还是个小白 以后慢慢做题得出思路吧

Arduino UNO R3控制风扇小实验

接线的时候注意按照原接线图,一接上风扇就会转动,按键开关并没有起到任何作用;后面仔细检查了一下,发现不是代码的问题;而是按键开关哪里的接线有问题;数字信号控制口的2引脚那跟线不应该接按键开关的GND那...

cortex_m3_stm32嵌入式学习笔记(一):建立工程模板+跑马灯实验(IO输出)

搞了一晚上+一上午 终于算是入门了 刚刚把LED点亮。。真是费劲啊 吐槽MDK对库函数的封装性。。太扯了 。。所有的固件库函数都要自己手动添加到工程里面去。。还好建好一个模板之后就不用动了(以后直...

MIT 操作系统实验 MIT JOS lab3

MIT JOS lab3

基于arduino UNO R3 的 MF RC522射频卡控制继电器的实验

硬件支持:1.一块arduino Uno R3                   2.一个MF RC522非接触式射频接收模块+射频卡                  3.一个5v...

操作系统ucore lab3实验报告

练习0 填写已有实验   本实验依赖实验1和实验2.请把要做的实验1的代码填入本实验中代码有lab1、lab2的注释相应部分 首先利用meld工具比较两个文件的差异 发现缺失的是kdebu...

Linux下实现思科实验-模拟器使用[图文]-----GNS3----dynamips

注:随便转载,不用注明处处,没啥技术含量。 相信很多人都知道在Windows下,使用模拟器做NA,NP,IE的实验了吧。 DynamipsGUI,我用得最多的就是小凡写的这个,太好了。 Dyna...

C++程序设计实验报告(七十八)---第十五周任务三(3-2)

/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2012, 烟台大学计算机学院学生 * All rights reserved. * 文件名称:输入...

【供参考,博主已经没有实验环境了】【中山大学东校区】【中大】【tp-link wr703n】【openwrt】【校园网inode】【无线路由】新版教程-搭载最小的认证客户端【C版oh3c】

--------------------------------------------------------------------------------------------------- ...
  • killzero
  • killzero
  • 2013年05月21日 13:45
  • 12262
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实验3
举报原因:
原因补充:

(最多只允许输入30个字)