我需要向子进程发送 3 个字符缓冲区,我想将它们视为 3 个独立的数据 block 。我想过使用 read()
和 write()
系统调用,但是在阅读 man 之后我看不到分离数据的方法 - 如果我理解正确的话,如果我在父进程中一个一个地写入 3 个缓冲区,然后 read()
一次调用将读取所有数据。当然,我可以在输入缓冲区中放置一些分隔符,如 '\0'
并将数据分隔为 child,但我正在寻找一些更优雅的方法来执行此操作。那么,是否有某种系统调用可以顺序传递数据?
最佳答案
一种可能性是使用 stdio.h
已经给你的东西:fdopen()
管道的相应末端并使用 fgets()
/fputs()
与 FILE
指针。这假定您的数据不包含换行符。
一些替代方案可能是使用固定大小的 read()
/write()
或使用其他分隔符并使用 strtok( )
。您也可以先发送大小,以便 child 知道在下一个 read()
调用中要读取多少字节。确实有很多选择。
关于c - 在 C 中使用管道传递多个数据 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418612/