云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 操作系统上实验报告3

操作系统上实验报告3

  • 62 次阅读
  • 3 次下载
  • 2025/5/25 1:09:50

例程5:

管道通信的实验 #include #include main() {

int i,r,j,k,l,p1,p2,fd[2]; char buf[50],s[50]; pipe(fd);

while((p1=fork())==-1); if(p1==0)

lockf(fd[1],1,0); /*子进程1 执行*/ /*管道写入端加锁*/

sprintf(buf,\printf(\write(fd[1],buf,50); lockf(fd[1],0,0); /*信息写入管道*/ /*管道写入端解锁*/ sleep(5);

j=getpid(); k=getppid();

printf(\exit(0); } else

{ while((p2=fork())==-1); if(p2==0) {

lockf(fd[1],1,0); /*创建子进程2*/ /*子进程2 执行*/ /*管道写入端加锁*/

sprintf(buf,\printf(\write(fd[1],buf,50); lockf(fd[1],0,0); /*信息写入管道*/ /*管道写入端解锁*/ sleep(5); j=getpid(); k=getppid();

printf(\exit(0); } else

{ l=getpid(); wait(0);

if(r=read(fd[0],s,50)==-1) printf(\else

printf(\wait(0);

if(r=read(fd[0],s,50)==-1) printf(\else

printf(\exit(0); } } } }

运行结果:

思考:(1)什么是管道?进程如何利用它进行通信的?解释一下实现方法。

(2)修改睡眠时机、睡眠长度,看看会有什么变化。解释。 (3)加锁、解锁起什么作用?不用它行吗? 答:(1)管道是指能够连接一个写进程和一个读进程、并允许他们以生产者—消费者方式进行通信的一个共享文件,又称pipe文件。由写进程从管道的入端将数据写入管道,而读进程则从管道的出端读出数据来进行通信。

(2)修改睡眠时机和睡眠长度都会引起进程被唤醒的时间不一,因为睡眠时机决定进程在何时睡眠,睡眠长度决定进程何时被唤醒。

(3)加锁、解锁是为了解决临界资源的共享问题。不用它将会引起无法有效的管理数据,即数据会被修改导致读错了数据。

例程7:

软中断信号实验 #include #include main() {

int i,j,k; int func();

signal(18,func()); if(i=fork()) {

j=kill(i,18); /*创建子进程*/ /*父进程执行*/

/*向子进程发送信号*/

printf(\k=wait();

/*父进程被唤醒*/

printf(\} else

搜索更多关于: 操作系统上实验报告3 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

例程5: 管道通信的实验 #include #include main() { int i,r,j,k,l,p1,p2,fd[2]; char buf[50],s[50]; pipe(fd); while((p1=fork())==-1); if(p1==0) lockf(fd[1],1,0); /*子进程1 执行*/ /*管道写入端加锁*/ sprintf(buf,\printf(\write(fd[1],buf,50); lockf(fd[1],0,0); /*信息写入管道*/ /*管道写入端解锁*/ sleep(5); j=getpid(); k=getppid(); printf(\

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com