Bash脚本和C++之间的持久IPC

Han*_*olo 5 c++ linux bash ipc

问题:每次事件发生时都有一个C应用程序调用Bash脚本.还有一个C++应用程序需要跟踪这些事件.在C++应用程序是由选择()事件循环驱动.在Bash脚本C++应用程序之间实现最简单的IPC是什么?

C Application ---Each time calls Bash script---> Bash application ---???---> C++ Application
Run Code Online (Sandbox Code Playgroud)

我想到的几个解决方案:

  1. 要使用TCP网络套接字,但这意味着select必须处理Listening和Actual套接字的事件
  2. 要使用命名管道,但是一旦bash脚本终止,管道的另一端也会关闭

是否有更简单的东西允许我在select()中只使用一个文件描述符?

Max*_*kin 3

Unix 数据报或 UDP 套接字就可以了。bash 脚本只会向该套接字发送一个数据报(您可能需要一个在该套接字上执行此操作的帮助程序sendmsg()sendto()例如socat或 netcat/nc)。接收方不需要接受数据报套接字的连接,一旦准备好读取,就必须有一个数据报在等待。受数据报长度限制。

  • 必须使用 socat 或 nc(版本 4.4+?,其中 nc 允许同时使用 -U 和 -u ),而不是“echo abc > socket”。因为您不能像在带有重定向符号的常规文件中那样在套接字中写入。 (3认同)