我需要检查Unix文件中文件结束信号的位置,并将其设置为不发送到管道文件。
我需要这个,因为我需要使用cat发送文件列表,当它到达第一个文件的 eof 时,它被发送到管道并被关闭。因此,该过程停止。
有人可以帮助解决这个问题吗?
提前致谢。
编辑代码:
mkfifo file.pipe cat file1.txt file2.txt > mkfifo.pipe
发送 file1.txt 的内容后,它发送 EOF 并关闭管道文件。因此不发送 file2.txt。
这似乎对我在 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
,除了其参数的内容外,不会通过管道发送任何内容 - 它只是在完成输入后关闭管道。