2012-08-22 26 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將不會發送任何內容,除了其參數的內容 - 它只是在輸入完成時關閉管道。

相關問題