作者erspicu (lpo)
看板perl
標題[問題] 如何抓stdout
時間Wed Nov 8 13:19:32 2006
這是我從網路上學來的,但是似乎不一定管用,
只要是要當"前導程式"抓取一些程式列印出的畫面面,
好比說下面,可以執行dir命令,然後輸出到out,接著再讀取出來
$th = 0;
open out,"dir |";
while (defined($line = <out>))
{
print "[$th]$line\n";
$th++;
}
close(out);
<>
問題是這樣不一定管用...很多程式會列印出的東西(部分部分的),
不是直接給你列印在螢幕,就是莫名其妙既沒有印在螢幕上,
stdout也抓不到.
像我現在要抓mencoder的編碼資訊,就抓不到,我用 > 直接把資訊導到out.txt上,
.
.
.
Pos: 0.0s 1f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
Pos: 0.0s 2f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
Pos: 0.1s 3f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
Pos: 0.1s 4f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
Pos: 0.1s 5f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
Pos: 0.1s 6f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
.
.
.
...代表省略的意思,我需要的
Pos: 0.1s 5f ( 0%) 0.00fps Trem: 0min 0mb A-V:0.000 [0:0]
資訊就是抓不到,有人可以跟我說該怎樣抓 "5f" 中的數值變數
(編碼到第幾張frame的編號), "0%" (進度) , "0.00fps" (編碼目前速度)嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.129.153.242
推 LiloHuang:Regular Expression 看看乎? 11/09 02:20
推 erspicu:是根本抓不到部分的STDOUT,抓到的話,比對我會處理,不過 11/09 02:25
→ erspicu:有人能直接說的話比較快,不然還要翻一下書 11/09 02:26
→ erspicu:抓不到的STDOUT,直接印到螢幕上,或是根本消失 11/09 02:31