东北大学操作系统实验3(2)

2019-01-19 18:36

先写入信息,那么之前的进程写入的信息将被覆盖,父进程也就读不到之前进程传递来的信息了。

3. 说明你是如何实现父子进程之间的同步的。 父进程调用wait函数进入等待,待某子进程执行结束后被激活,继续执行。再一次调用wait等待另一个进程执行结束,等到时被激活,继续执行。

附:基本实验的代码:

#include #include #include #include int main() {

pid_t pid1;//子进程1 pid pid_t pid2;//子进程2 pid int fields[2];//管道两端 char input[100]; char output[100];

while(pipe(fields)!=0)//建立管道,失败退出 { }

while((pid1=fork())<0) { }

if(pid1==0)//当前为子进程1 { }

else if(pid1>0)//当前为父进程 {

while((pid2=fork())<0) { }

if(pid2==0)//当前为子进程2

printf(\生成子进程2失败!\\n\

printf(\生成了子进程1,PID:%d\\n\lockf(fields[1],1,0);//锁住写端口

sprintf(input,\,PID:%d\\n\write(fields[1],input,sizeof(input)); lockf(fields[1],0,0);//解锁写端口 exit(0);

printf(\生成子进程1失败!\\n\printf(\生成管道失败!\\n\

}

}

{ }

else if(pid2>0)//当前为父进程 { }

int i=0; for(;i<2;i++) { }

wait(0);//父进程进入阻塞状态,直到子进程执行结束 printf(\当前为父进程,PID:%d\\n\read(fields[0],output,100);

printf(\父进程从管道中读到的数据为:%s\\n\printf(\生成了子进程2,PID:%d\\n\lockf(fields[1],1,0);//锁住写端口

sprintf(input,\,PID:%d\\n\write(fields[1],input,sizeof(input)); lockf(fields[1],0,0);//解锁写端口 exit(0);

return 0;


东北大学操作系统实验3(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:宾馆四个能力建设 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: