我需要检查Unix中文件中文件结尾的信号在哪里,并将其设置为不发送到管道文件。
我需要这个,因为我需要使用 cat 发送文件列表,当它到达第一个文件的eof时,它会被发送到管道并关闭。因此,该过程停止。
有人可以帮忙解决这个问题吗?
提前致谢。
编辑代码:
mkfifo file.pipe cat file1.txt file2.txt > mkfifo.pipe
发送file1.txt的内容后,它会发送EOF并关闭管道文件。因此不会发送file2.txt。
答案 0 :(得分:0)
这似乎对我来说在Linux上运行良好:
$ mkfifo fifo
$ yes aaa | head -n 1000 > a
$ yes bbb | head -n 1000 > b
$ cat fifo > result &
$ cat a b > fifo
$ wc result
2000 2000 8000 result
我真的认为你应该从命名管道的两端向我们展示你的实际代码。您还应该告诉我们有关您的环境的更多信息。 “Unix”并没有真正的帮助;告诉我们您的操作系统和硬件平台。
没有“EOF字符”这样的东西,因此它不能包含在任何形状或形式的文件中。当到达文件末尾时,相应的read()
系统调用将返回0
并且 将由用户空间转换为报告结束的任何方案 - 的文件。
因此,在这种特殊情况下,cat
除了参数的内容外,不会通过管道发送任何内容 - 它只是在输入完成时关闭管道。