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

jld*_*ont 2 linux communication process

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

我看到popen似乎不同时支持"r"和"w"访问......或者至少暗示的是:

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

(我现在很想念Erlang)

Fra*_*ger 8

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);
Run Code Online (Sandbox Code Playgroud)

现在你可以使用listenconnect或任何插座家里人.这是一些工作,但是在Linux上实现IPC的最佳方式.

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

  • 或者使用命名套接字(参见`mkfifo`).对于双向通信,您只需要其中两个...... (2认同)