c - 在 C 中使用管道传递多个数据 block

标签 c operating-system posix

我需要向子进程发送 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/

相关文章:

c++ - 当两者都是变量时如何将 float 除以整数?

c - 了解开关条件下的寄存器用法

安卓:有PC端口吗?

python - 使用python扩展字符串中的环境变量

c - 帮助比较 argv 字符串

c++ - 通过 stdio 的 HTTP POST/GET

memory - 多级页表如何节省内存空间?

linux - 在 Linux 中替代 KILL 命令

file-io - 为什么 perror() 在重定向时改变流的方向?

c - 如何检查路径是否指定卷根目录