管道“地址系统”

Posted

技术标签:

【中文标题】管道“地址系统”【英文标题】:pipe "address system" 【发布时间】:2013-03-09 04:02:34 【问题描述】:

也许我误解了How to make a pipe in c++ 因此http://linux.die.net/man/2/pipe,但是pipe 怎么知道从哪里发送或接收?

在通过 ajax 页面更新数据库时,我希望 ajax 程序向我的 websocket 程序发送消息以更新所有其他相关用户,建议使用 pipe 可能是最好的 how 2 c++ programs call each other's class/functions on same linux box? .

是否只有一个管道,所有程序都读取它并验证消息?


注意:如果有帮助,我正在使用 fastcgi++ 和 websocket++。

【问题讨论】:

【参考方案1】:

如果希望多个独立进程从管道中读取数据,则需要使用命名管道,也称为FIFO。

使用mkfifo 函数,一个进程在文件系统(通常在/tmp)中创建一个文件。然后,任何其他有权访问该文件的进程都可以使用正常的open 系统调用打开该文件以进行读取或写入。

【讨论】:

感谢您的回答!我只想要每个管道一个源和一个目标,但我希望总体上有很多管道,并且每个程序都有很多管道。管道是使用 FIFO 之类的文件系统还是使用内存? @JoeCoderGuy 仅在创建 fifo 时 mkfifo 需要该文件(因此接收进程知道要打开什么),然后按照正常管道 - 数据通过 fifo(或管道) 不需要通过磁盘。 @JoeCoderGuy 如果两个进程完全独立,即两个不同的程序,则必须使用mkfifo 来创建命名管道,因为pipe 系统调用只会创建内存中的管道.另一方面,如果您fork 是新进程,那么这两个进程是相关的,那么在fork 之前执行pipe 调用是可以的,因为在执行fork 时会继承文件描述符。

以上是关于管道“地址系统”的主要内容,如果未能解决你的问题,请参考以下文章

跨内存附加。无法使用管道发送远程地址

ip地址查询系统和CMD查询的结果不一样

win10系统怎么查自己电脑的IP地址[系统天地]

短URL地址系统的实现

为啥两个 HTTP 和 TCP 地址可以使用同一个端口,而两个 IPC 地址不能使用同一个命名管道?

短URL地址系统的实现