我对使用Linux Pipes for IPC存有疑问。我的问题是
Linux管道可以用于在不同机器上运行的进程之间进行通信吗?
谢谢,
答案 0 :(得分:3)
不,您不能仅使用pipe
在不同的计算机之间进行通信,因为管道被定义为本地计算机通信方法(IEEE standard表示它在当前进程中创建了两个文件描述符。描述符通常无法发送到其他计算机,只能从父项或passed via local machine sockets继承。
但是您可以尝试将管道用于某些外部套接字程序,例如netcat
,它将通过tcp套接字重新发送所有数据,而远程netcat
会将其重播回程序。
如果您正在开发一些应用程序,最好直接使用tcp socket
。
PS:IPC - 进程间通信 - AFAIK意味着一台(同一台)机器上的不同进程之间的通信(来自Linux程序员指南1995的linux IPC)。
PPS:如果套接字很难直接使用它们,您可以选择一些消息传递库或标准。例如,MPI标准(OpenMPI,MPICH库)通常用于在紧密耦合的computing clusters中的许多机器之间进行通信,并且有一些流行的接口,如RPC(Remote procedure call,几个实现)或{{3 }}
答案 1 :(得分:0)
管道仅用于同一主机上相关进程之间的通信(例如父进程和子进程)。