📄 进程通讯及同步互斥机制.txt
字号:
进程通讯及同步互斥机制
实验目的:掌握进程的管道通讯机制和信号量同步互斥机制
实验内容:
1. 进程的管道通讯
写一个程序,创建一个管道,将命令行中的两个进程用管道连接起来,例如,这个程序
的语法结构可以是这样的:
./my_pipe "cat /etc/passwd" "grep root"
命令中cat /etc/passwd 的输出通过管道作为grep root 的输入。
可能用到的系统调用:
fork()
exec()
pipe()
dup()
2. 信号量实现的同步互斥机制
编制两个程序,一个程序是写者,其行为如下:
1) 随即产生一个0-100 间的整数
2) 打印自己的进程号以及这个整数,并将它写入一个固定的文件。
3) 随机睡眠1-10 秒
4) 重复步骤1、2、3,
另一个程序是读者,其行为如下:
1) 从固定的文件中读取一个整数。
2) 打印自己的进程号以及打印这个整数。
3) 随机睡眠1-3 秒。
4) 重复步骤1、2、3,
要求:
1) 读者和写者可以有多个实例同时运行。
2) 读者和读者之间可以同时读取文件,但写者和写者之间以及读者和写者之间必须互
斥。
write()
read();
semget();
sepop();
semctl();
sleep();
要求:查找并阅读上述系统调用的相关资料,将上述相关的函数封装为P()、V()操作,
使用你封装的P()、V()操作实现同步和互斥。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -