我想也许这是一个显而易见的问题,但我只想问问你们。
我正在使用管道系统调用进行父子进程通信,以创建一个未命名的管道。
我的子进程需要收集一些信息并将其发送给其父级。我的问题是:
非常感谢!
答案 0 :(得分:2)
你可以write()
和read()
struct
就好了;使用指向struct
的指针作为buf
参数。当您想要在不遇到问题的同一台机器上运行的进程之间执行此操作时,需要对可移植表示进行编组/解组,以确保在任何地方都能以相同的方式理解值。这包括识别数据“数据包”的开始和结束,因为管道实际上并不具有数据包的概念:如果您所做的只是编写一系列相同的struct
s,那么您可以{ {1}}他们和读者可以依靠write()
返回0来表示系列的结尾;但是如果你还需要发送其他信息,那么你需要一个框架协议来说“接下来是什么样的read()
”,“接下来是一个字符串”等等。