Linux进程控制实验报告.doc

Linux进程控制实验报告.doc

ID:51956158

大小:214.50 KB

页数:6页

时间:2020-03-20

Linux进程控制实验报告.doc_第1页
Linux进程控制实验报告.doc_第2页
Linux进程控制实验报告.doc_第3页
Linux进程控制实验报告.doc_第4页
Linux进程控制实验报告.doc_第5页
资源描述:

《Linux进程控制实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Linux进程控制实验报告实验名称:Linux进程控制实验要求:一.编写一个Linux系统C程序,由父亲创建2个子进程,再由子进程各自从控制台接收一串字符串,保存在各自的全局字符串变量中,然后正常结束。父进程调用waitpid等待子进程结束,并分别显示每个子进程的进程标识号和所接收的字符串。二.父进程创建一子进程,父进程向子进程发送数据,子进程接收数据,并写入文件。关键问题:一.需要用共享内存或使用vfork()函数创建子进程进行进程之间的数据共享及传递。父进程必须等待子进程结束才能继续执行。二.

2、注意信号的使用。子进程需等待父进程发送信号才执行相应操作。父,子进程之间的通信需要用到共享内存或者父进程用vfork()创建子进程。设计思路:一.使用共享内存实现数据共享,子进程一用shmaddr1保存输入的字符串,子进程二用shmaddr2保存字符串。父进程等待两个子进程分别输入完字符串,然后再分别把数据显示出来。二.用共享内存的方法来实现父子进程之间的通信,首先建立共享内存区域,然后建立子进程,并让子进程等待父进程信号。在父进程中输入字符串,并把此字符串保存在共享内存区域,然后向子进程发出信号

3、SIGUSR1,若子进程接受到SIGUSR1信号,则把父进程保存在共享内存区域的字符串取出,并把它写入文件。关键代码:一.#include#include#include#include#include#include#include#defineKEY1234#defineSIZE64char*shmaddr1;char*s

4、hmaddr2;main(){pid_tpid1;pid_tpid2;char*str1;char*str2;intshmid1;intshmid2;shmid1=shmget(23,SIZE,IPC_CREAT

5、0600);shmid2=shmget(24,SIZE,IPC_CREAT

6、0600);if((pid1=fork())<0){printf("creat1fail!");exit(0);}elseif(pid1==0){shmaddr1=(char*)shmat(shmid1,NU

7、LL,0);printf("creat1successfully!");scanf("%s",str1);printf("youenter:%s",str1);strcpy(shmaddr1,str1);shmdt(shmaddr1);exit(0);}wait();if((pid2=fork())<0){printf("creat2fail!");exit(0);}elseif(pid2==0){shmaddr2=(char*)shmat(shmid2,NULL,0);printf(

8、"creat2successfully!");scanf("%s",str2);printf("youenter:%s",str2);strcpy(shmaddr2,str2);shmdt(shmaddr2);exit(0);}wait();shmaddr1=(char*)shmat(shmid1,NULL,0);shmaddr2=(char*)shmat(shmid2,NULL,0);printf("oneis%s",shmaddr1);printf("twois%s",shma

9、ddr2);shmdt(shmaddr1);shmdt(shmaddr2);shmctl(shmid1,IPC_RMID,NULL);shmctl(shmid2,IPC_RMID,NULL);exit(0);}实验结果:二.#include#include#include#include#include#include#include#include

10、ys/ipc.h>#include#definekey1024#definesize160staticvoidsign(int);intshmid;char*shmaddr;main(){pid_tpid;charstr[20];shmid=shmget(key,size,IPC_CREAT

11、0600);if((pid=fork())<0){perror("创建子进程错误!");exit(0);}elseif(pid==0){if(signal(SIGUS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。