进程间的管道通信

  • 实验目的

1. 对理论课中学习的进程,程序等的概念做进一步地理解,明确进程和程序的区别;

2. 加深理解进程并发执行的概念,认识多进程并发执行的实质;

3. 观察进程争夺用资源的现象,分析其过程和原因,学习解决进程互斥的方法;

4. 了解Linux系统中多进程之间通过管道通信的基本原理和应用方法。

  • 实验原理

进程间可以通过管道相互传送消息,我们可以把 管道看作是一块空间,进程可以经由两个不同的文 件描述字(文件描述字是Linux用来识别文件的, 所有已打开的文件,都有系统分配的唯一文件描述 字)来分享这块空间。存取这块空间的文件描述字 可经下面的pipe()系统调用取得,由于返回的是两 个文件描述字,因此用数组来表示

  • 实验所用函数

fork():产生一个新的子进程

getpid():取得目前进程的进程识别码

exit():正常终结目前进程的执行

sleep():睡眠time秒 

wait():暂停目前进程的执行

pipe() :会建立管道

lockf() :用于对一个已经打开的文件,施加、检测和移除 POSIX 标准的软锁

read():会把参数fd 所指的文件传送count个字节到buf指针所指的内存中。

write():会把参数buf所指的内存写入count个字节到参数fd所指的文件内。

perror(): 用来将上一个函数发生错误的原因输出的标准错误(stderr)。

Strcpy(): 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。

  • 实验代码

  • 程序运行结果截图

调试过程:

  • 实验遇到问题及解决处理方法

在实验中忘了怎么运行程序了,通过上网查找资料解决了问题

通过实现进程间的管道通信,理解了进程间如何通过特定的数据结构进行信息交换。

实验心得:

学习了pipe(), read(), write()等系统调用的使用,加深了对进程通信机制的认识。

实验提高了解决实际编程问题的能力,增强了自主学习和问题解决的自信。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值