请考虑以下代码:
writer.c
mkfifo("/tmp/myfifo", 0660);
int fd = open("/tmp/myfifo", O_WRONLY);
char *foo, *bar;
...
write(fd, foo, strlen(foo)*sizeof(char));
write(fd, bar, strlen(bar)*sizeof(char));
Run Code Online (Sandbox Code Playgroud)
reader.c
int fd = open("/tmp/myfifo", O_RDONLY);
char buf[100];
read(fd, buf, ??);
Run Code Online (Sandbox Code Playgroud)
我的问题是:
既然事先不知道foo和bar有多少字节,我怎么知道从reader.c读取多少字节?
因为,例如,如果我在阅读器中读取10个字节,并且foo和bar一起小于10个字节,我将把它们放在同一个变量中并且我不想要它们.
理想情况下,我会为每个变量都有一个读取函数,但我再次不知道数据有多少字节.
我想在write.c中使用分隔符在write for foo和bar之间添加另一个写指令,然后我就没有问题从reader.c解码它.这是怎么回事?
谢谢.