如何使用共享内存和信号量实现管道?

4

我的当前任务涉及使用共享内存实现Linux中的pipe()

由于这是我第一次使用信号量和共享内存(也有mutex),我对此毫无经验。

能否有人提供解释并说明其实现方法?谢谢。


3
StackOverflow不是一个教程网站。你了解基本概念吗?你知道共享内存是什么,以及如何同步并发访问内存吗?对于这些主题,你可以在许多地方找到丰富的资料,包括书籍、互联网甚至维基百科。请做些背景研究,在你遇到具体问题之前不要重复发布问题。祝好运! - Kerrek SB
1个回答

3

以下是相关的man手册:

共享内存

ftok
shmget
shmat
shmctl
shmdt

信号量

sem_init
sem_wait
sem_post

这个想法是,两个不同的应用程序可以使用管道来交换数据。这可以通过共享内存来实现。还需要进行一些同步(这里就需要使用信号量),以确保进程读取的数据是一致的。例如,您必须阻止进程A向管道写入数据,直到进程B从先前的写入中读取了数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接