1 / 15
文档名称:

操作系统实验报告.docx

格式:docx   大小:38KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验报告.docx

上传人:xnzct26 2022/1/26 文件大小:38 KB

下载得到文件列表

操作系统实验报告.docx

相关文档

文档介绍

文档介绍:-
. z
操作系统实验报告
**:

指导教师:
完成日期:
目录
实验一1
实验二2
实验三7
实ed!!");}
if (pid1==0){printf("This is child b\n");e*it(0);}
-
. z
if (pid1>0){wait(NULL);
pid2 = fork();
if (pid2<0) {printf("Fork 2 failed!!"); }
if (pid2==0) {printf("This is child c\n");
e*it(0);}
if (pid2>0) {wait(NULL);
printf("This is father a\n");
e*it(0);}
}
}
〔3〕进程的管道通信
#include<>
#include<>
#include<sys/>
#include<>
int main()
{
int pid1, pid2;int pfd[2];
char *msg1="Child 1 is sending a message!";
char *msg2="Child 2 is sending a message!";
char buf[256];int r,w;
if(pipe(pfd)<0){printf("pipe create error!\n"); e*it(1);}
pid1 = fork();
if (pid1<0){printf("Fork 1 failed!!");}
if (pid1==0){close(pfd[0]); //write
sleep(3);
if(w=write(pfd[1],msg1,strlen(msg1))<0){ printf("wirte error!\n");
e*it(1);}
else {printf("child 1 send msg to pipe!\n"); }
e*it(0);
}
if(pid1>0)
{
wait(NULL);pid2 = fork();
if(pid2<0){printf("Fork 2 failed!!");}
if(pid2>0)
{close(pfd[1]); //read
sleep(3);
-
. z
if(r=read(pfd[0],buf,256)<0){printf("read error!\n");e*it(1);}
else {printf("parent read from pipe: %s\n",buf); }
wait(NULL);close(pfd[1]); //read
sleep(3);
if(r=read(pfd[0],buf,256)<0){printf("read error!\n");e*it(1);}
else {printf("parent read from pipe: %s\n",buf);}
}
if(pid2==0)
{close(pfd[0]); //write
sleep(6);
if(w=write(pfd[1],msg2,strlen(msg2))<0)
{ printf("write error!\n");e*it(1);}
else {printf("child 2 send msg to pipe!\n");}
e*it(0);
}
}
}
六、实验结果
从图中可以看出,分别输出了,三个字母,三句话,实现了子进程向管道写数据,父进程从管道中读出。
七、实验感想
通过本次实验,我们对进程的概念加深了理解,熟悉了进程的创立方法与作用机制,明确了进程与程序的异同。同时,我们掌握了使用管道通信的机制,进一步认识了并发执行的实质。
实验三一个进程启动另一个程序的执行
一、实验目的
编写 Linu* 环境下,fork()与e*ec()的结合使用实现一个进程启动另一个程序的执行的根本方法,掌握e*ec()的几种调用方法。
二、实验容
父进程从终端读取要执行的命令,并交给子进程执行。父进程等待子进程完毕,并打印子进程的返回值。
三、实验要求