2013-06-24 47 views
0

我有一個練習寫一個程序,請執行下列操作管材加工:與執行更「EXEC()」函數腐化線打破在bash

ls -la | grep "^d" | more 

但是在執行我的計劃後,bash的解釋會不是斷行或正確顯示命令,但是執行它們後顯示結果,它看起來像控制檯的輸入沒有得到標準輸出,但在其他地方,我找不到這種行爲的原因。

我正在使用3個子進程與stdio重定向來連接它們之間的管道。

該程序成功完成它顯示良好的結果,沒有顯示錯誤或任何,當我使用貓而不是更多一切正常後,執行,是否有可能更多的一些系統值的變化,並沒有改變他們回來?

+0

你如何執行你的程序?代碼是什麼? – 2013-06-24 10:06:58

回答

0

這可能是因爲more被關閉回聲和規範的方式對您的TTY(見man 3 termios),決不切換回它退出之前(可能是因爲它被沒有機會殺死,或者因爲它並不認爲它連接到TTY)。您可以使用gdb附加到more,以瞭解這是爲什麼,或者您可以在退出之前自行重置終端。

+0

嗯,但我正在等待我的分叉過程完成,所以它寧願關掉它,不再打開它,我稍後會檢查它,但您的解釋可能是一個很好的開始的地方謝謝 – cerkiewny

+0

這似乎是bash版本依賴於在另一臺機器上執行更多工作的代碼很好,我會嘗試在機器上調試出現問題。 – cerkiewny