0

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

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

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

提前致谢。

编辑代码:

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

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

4

1 回答 1

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,除了其参数的内容外,不会通过管道发送任何内容 - 它只是在完成输入后关闭管道。

于 2012-08-23T00:35:20.747 回答