可靠的双向通信到Linux进程?

实现Linux进程双向通信的可靠方法是什么?

我看到popen似乎并不支持“r”和“w”同时访问……至less这是暗示的:

The type argument is a pointer to a null-terminated string which must be either 'r' for reading or 'w' for writing.

(我现在很想念Erlang)

Solutions Collecting From Web of "可靠的双向通信到Linux进程?"

Unix域套接字是你的朋友。

Unix域套接字或IPC套接字(进程间通信套接字)是与Internet套接字类似的数据通信端点,但不使用网络协议进行通信。 它在POSIX操作系统中用于进程间通信。

您为通信通道保留一个名称,例如/myapp/ipc ,然后这两个进程使用UNIX套接字打开该地址:

 struct sockaddr_un local; int len; s = socket(AF_UNIX, SOCK_STREAM, 0); local.sun_family = AF_UNIX; strcpy(local.sun_path, "/myapp/ipc"); len = strlen(local.sun_path) + sizeof(local.sun_family); bind(s, (struct sockaddr *)&local, len); 

现在,您可以使用listenconnect或其他任何插座系列。 这是一点点工作,但是在Linux上实现IPC的最好方法。

由于Erlang只是用于指定通过命名管道(进程)进行通信的小型服务器(进程)的一种很好的语言,因此该模型应该让您感觉舒适。

良好的旧TCP / IP连接对我来说一直很好。