我有一個程序,它從外部應用程序讀取輸出。外部應用程序給出了一組輸出。我的程序從外部應用程序while($line=<handle to external app>)
讀取輸出並將其打印到STDOUT.But「print $line STDOUT
」只打印一些行,當發生錯誤時,打印到STDOUT不起作用,但我的另一個日誌語句「push @arr,$line
」已存儲完成從外部應用程序的輸出。從這我知道錯誤發生時,STDOUT不能正常工作。STDOUT外部重定向,在控制檯看不到輸出
如: 如果外部應用程序的輸出是這樣的:
Starting command
First command executed successfully
Error:123 :next command failed
Program terminated
在這裏STDOUT
只打印:
Starting command
First command executed successfully
但是如果我檢查數組它有完整的輸出包括錯誤細節。所以我猜想STDOUT
已被重定向或丟失。
於是,我就在節目的開頭存儲STDOUT
到$old_handle using
打開,然後嘗試使用select($old_handle)
print語句之前恢復(想一些事情重定向標準輸出時發生錯誤)
,但是我沒全成,我不知道這裏出了什麼問題。請幫幫我。
爲什麼是這個問題的社區維基?有些人可能不願意回答,因爲upvotes不會給他們任何聲譽。 – Ether 2010-06-22 16:13:28