实验目的
通过编写共享内存实验,进一步了解使用共享内存的具体步骤,同时加深对共享内存的理解。在本实验中,采用信号量作为同步机制完善两个进程(“生产者”和“消费者”)之间的通信。
实验内容
利用共享内存实现文件的打开和读写操作。所需知识点:
信号量、
共享内存。
实验流程图
实验代码
本实验共需要5个文件,其中producer.c实现了生产者的功能,customer.c实现了消费者的功能,另外的shm_com.h、sem_com.c、sem_com.h是模块化后的文件,被producer.c和customer.c文件调用。实验结构图如下

该5个文件,我已经上传到了资源,如有需要,请自行下载,
点此下载
producer.c

customer.c
执行程序
将上述5个文件编写后,先后使用命令编译
gcc producer.c sem_com.c -o producer
gcc customer.c sem_com.c -o customer

在终端1执行producer

在终端2执行customer

在终端1中输入字符,结果如下