我有一个父进程和n个子进程,它们等待从网络接收信息。问题是,对于子进程从网络接收的每一条消息,我都需要告诉父进程该消息包含的内容。如果我试图在父进程和子进程之间创建管道或socketpair,则父进程不知道消息在哪里结束和另一个开始。你能帮忙吗?

最佳答案

您正在使用面向流的管道/套接字对。所以你失去了信息的界限。
使用面向数据报的套接字来保持消息边界。
有关基于数据报的unix套接字和socketpairs的更多信息,请参见mapageunix(7)
有些功能可能适合您:

   socket(AF_UNIX, SOCK_DGRAM, 0);
   socketpair(AF_UNIX, SOCK_DGRAM, 0, int *sv);

关于c - linux fork通信,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14194312/

10-11 15:54