实现与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了)
发布于 2009-11-06 03:19:00
Unix domain sockets是你的朋友。
Unix域套接字或IPC套接字(进程间通信套接字)是类似于互联网套接字的数据通信端点,但不使用网络协议进行通信。它在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);现在,您可以使用listen或connect或套接字系列中的任何其他工具。这需要做一些工作,但这是在Linux上实现IPC的最好方法。
由于Erlang只是一种很好的语言,用于指定通过命名管道(进程)进行通信的小型服务器(进程),因此该模型对您来说应该很方便。
发布于 2009-11-06 03:20:26
良好的旧TCP/IP连接对我来说总是工作得很好。
https://stackoverflow.com/questions/1682911
复制相似问题