gpt4 book ai didi

c - 写入管道死锁程序

转载 作者:行者123 更新时间:2023-12-04 06:53:23 25 4
gpt4 key购买 nike

我在使用管道的程序中遇到了问题。

我正在做的是使用管道和 fork/exec 将数据发送到另一个进程

我所拥有的是这样的:

//管道在这里创建

if(fork() == 0)//子进程
{
...
execlp(...);
}
别的
{
...
fprintf(stderr, "现在正在写入管道\n");
写(管道,缓冲区,BUFFER_SIZE);
fprintf(stderr, "写入管道!");
...
}

这适用于大多数消息,但是当消息非常大时,写入管道会死锁。

我认为管道可能已满,但我不知道如何清除它。我尝试使用 fsync 但这没有用。

谁能帮我?

最佳答案

您需要在进行写入的过程中关闭管道的读取端。操作系统会将写入管道的数据保留在管道缓冲区中,直到所有打开管道读取端的进程实际读取那里的内容。

关于c - 写入管道死锁程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2815546/

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