gpt4 book ai didi

c - 与 sleep() 结合使用时,管道无法按预期工作

转载 作者:太空宇宙 更新时间:2023-11-04 04:44:55 24 4
gpt4 key购买 nike

我有一个这样的代码片段(测试代码,所以不要太介意风格):

int main() {
int fd[2];
pipe(fd);
int id = fork();

if (id > 0) {
char *line = "apple";
close(fd[0]);
for (;;) {
int written;
if (written = write(fd[1], line, 7) == -1) {
break;
}
printf("written %d\n", written);
sleep(1);
}
close(fd[1]);
}
else {
char line[10];
close(fd[1]);
int raed;
while (raed = read(fd[0], line, 10) > 0) {
printf(line);
}
printf("read %d\n", raed);
close(fd[0]);
}
return 0;
}

它一直打印“written 0”。但是,如果我注释掉 sleep(1),它仍然总是打印“written 0”,但会打印“apple”。我不知道发生了什么。为什么我不能保持 sleep(1) 并让它每 1 秒打印一次?为什么它写 0 而不是 6?

最佳答案

if (written = write(fd[1], line, 7) == -1)

使用 if ((written = write(fd[1], line, 7)) == -1) 有错误

大多数时候编码人员经常忘记这一点......

关于c - 与 sleep() 结合使用时,管道无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22214351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com