我想也许这是一个明显的问题,但我只是想问问你们。使用管道的进程间通信
我正在使用管道系统调用来创建未命名管道的父子进程通信。
我的子进程需要收集一些信息并将其发送给其父。我的问题是:
- 我只能使用写入和读取功能发送和接收字符串吗?我不得不忘记发送结构。
- 如果我对上一个问题的回答是“是”,将所有信息传递给父进程的正确方法是调用函数write和read几次?
非常感谢!
我想也许这是一个明显的问题,但我只是想问问你们。使用管道的进程间通信
我正在使用管道系统调用来创建未命名管道的父子进程通信。
我的子进程需要收集一些信息并将其发送给其父。我的问题是:
非常感谢!
你可以write()
和read()
struct
就好了;使用指向struct
的指针作为buf
参数。当你想在不同机器上运行的进程之间执行此操作时,会遇到问题,需要对可移植表示进行编组/解组,以确保各处的值都以相同的方式理解。这包括识别数据“数据包”的开始和结束,因为管道并没有真正的数据包概念:如果你正在做的是写一系列相同的数据,那么你可以只使用write()
他们和读者可以依靠read()
返回0来表示该系列的结束;但是如果你还需要发送其他信息,那么你需要一个成帧协议来说“接下来是什么样的这样一种”struct
“,”接下来是一个字符串“等。
谢谢你,米去看看如何做到这一点! –
我已将“父亲进程”改为“父进程”,这不仅在政治上是正确的,而且是技术术语。 – aib