如何在 Mac OS 上用 C++ 实现命名管道?

Posted

技术标签:

【中文标题】如何在 Mac OS 上用 C++ 实现命名管道?【英文标题】:How to implement a named Pipe in C++ on Mac OS? 【发布时间】:2017-04-23 21:59:10 【问题描述】:

我正在开发一个我想与 Java 程序(JAR 文件)通信的 c++ 程序。

C++ 将写入管道,而 Java 端将从管道中读出。我已经在 Windows 中实现了这个功能。请不要推荐我如何在这两个程序之间进行通信的替代方式;我已经探索和测试了很多。

【问题讨论】:

欢迎来到 Stack Overflow!请take the tour 了解该网站的运作方式以及此处的主题问题,并相应地编辑您的问题。另见:Why is "Can someone help me?" not an actual question? man 2 mkfifo 你的问题解决了吗? 【参考方案1】:

一个简单的方法是从 c++ 程序写入 std::out 并在 java 程序中从 std::in 读取。您使用mkfifo 创建管道,然后启动您的 cpp 程序并将其输出重定向到管道,然后启动您的 java 程序并将其输入重定向到管道。

调用看起来像这样

mkfifo myPipe
./cppProgramm > myPipe&
java javaProgramm < myPipe&

【讨论】:

以上是关于如何在 Mac OS 上用 C++ 实现命名管道?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C++ 中执行 os.getpid()?

docker容器文件夹中的命名管道通过boot2docker挂载到mac os x文件系统

c++下使用命名管道实现进程间通信

如何在命名管道中的 EOF 之后恢复读取

可以实现C++与PHP交互吗

c++ 如何在构造函数中启动一个线程,从命名管道读取数据?