linux 实验2 进程创建,实验2Linux进程控制与通信

41528d3028836879cd698677c3999917.gif实验2Linux进程控制与通信

实验 2 Linux 进程控制与通信1. 实验目的(1 ) 进一步认识并发执行的概念,认识父子进程及进程创建原理;(2 ) 了解 Linux 系统中进程通信的基本原理。2. 实验环境一台装有 Linux 操作系统(Fedora 7) ,至少具有 256M 内存的微机。3. 预备知识1) gcc 编译器的使用2) fork 系统调用:创建一个新进程3) getpid 系统调用:获得一个进程的 pid4) wait 系统调用:发出调用的进程等待子进程结束5) pipe 系统调用:建立管道6) write 系统调用:向文件中写数据7) read 系统调用:从文件中读数据4. 实验内容(1 )编写一段程序(程序名为 parent_child.c) ,使用系统调用 fork()创建两个子进程,如果是父进程显示“Parent Process: A”,子进程分别显示“This is child1 (pid1 =xxxx )process: B”和“This is child1 (pid1 =xxxx )process: C”,其中“xxxx ”分别指明子进程的 pid 号。(2 )编写一段程序(程序名为 comm.c),父子进程之间建立一条管道,子进程向管道中写入“Child process 1 is sending a message!”,父进程从管道中读出数据,显示在屏幕上。5. 实验要求(1 ) 将 parentchild.c 源程序,及程序执行结果写入实验报告;(2 ) 将 fork()系统调用后内核的工作原理写入实验报告;(3 ) 将 comm.c 源程序,及程序执行结果写入实验报告;(4 ) 将 Linux 系统中管道通信的工作原理写入实验报告。(1 )#include #include main(){if ( fork() == 0 ) // 子进程 1{printf(“This is child1 (pid1 =%d )process: B\n“, getpid() );exit(0);}else{if ( fork() == 0 ) // 子进程 2{printf(“This is child2 (pid2 =%d )process: C\n“, getpid() );exit(0);} printf(“Parent Process: A\n“); // 父进程exit(0);}}(2 )#include#include#includeint main(){int a[2];int pid;char in[50];pipe(a);pid=fork();if(pid==0){close(a[0]);write(a[1],“ Child process 1 is sending a message!“,sizeof(“Child process 1 is sending a message!“));exit(0);}else if(pid>0){close(a[1]);wait(0);read(a[0],in,sizeof(in));printf(“%s\n“,in);exit(0);}}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值