标签: c pipe mkfifo
在此代码中,当我打开写入管道时,我的程序崩溃了。
h c = [f x | (a,b) <- c, f <- b, x <- a]
一切似乎都很好,但是我的错误在哪里;
答案 0 :(得分:1)
这是预期的行为。来自man 7 fifo:
man 7 fifo
通常,打开FIFO块,直到另一端也打开。
因此,除非有人打开同一管道进行读取,否则您的open不会返回。您可能想添加O_NONBLOCK标志(并可能在编写时得到SIGPIPE),或重新访问设计。
open
O_NONBLOCK
SIGPIPE