如何确定文件结尾并且不要将其发送到管道文件?

时间:2012-08-22 14:50:13

标签: shell unix

我需要检查Unix中文件中文件结尾的信号在哪里,并将其设置为不发送到管道文件。

我需要这个,因为我需要使用 cat 发送文件列表,当它到达第一个文件的eof时,它会被发送到管道并关闭。因此,该过程停止。

有人可以帮忙解决这个问题吗?

提前致谢。

编辑代码:

mkfifo file.pipe cat file1.txt file2.txt > mkfifo.pipe 

发送file1.txt的内容后,它会发送EOF并关闭管道文件。因此不会发送file2.txt。

1 个答案:

答案 0 :(得分:0)

  1. 这似乎对我来说在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”并没有真正的帮助;告诉我们您的操作系统和硬件平台。

  2. 没有“EOF字符”这样的东西,因此它不能包含在任何形状或形式的文件中。当到达文件末尾时,相应的read()系统调用将返回0并且 将由用户空间转换为报告结束的任何方案 - 的文件。

    因此,在这种特殊情况下,cat除了参数的内容外,不会通过管道发送任何内容 - 它只是在输入完成时关闭管道。