2012-08-22 24 views
0

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

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

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

在此先感谢。

EDIT代码:

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

发送FILE1.TXT的内容之后将其发送到EOF和关闭管道文件。因此不发送file2.txt。

+3

请张贴您的代码。 – bpgergo

+0

mkfifo file.pipe cat file1.txt file2.txt> mkfifo.pipe 发送file1.txt内容后,它发送EOF并关闭管道文件。因此不发送file2.txt。 –

+0

'cat'不应该发送任何文件结束符。其目的是将多个文件合并成一个文件。 (另外,没有实际的文件结尾字符。) – chepner

回答

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

相关问题