Re: [問題] 關於IO.popen的差異

作者: kira925 (1 2 3 4 疾風炭)   2013-01-09 16:05:04
: 推 mars90226:我想你搞錯IO.popen了~ 你應該是需要exec 01/09 00:01
: → mars90226:popen是把程式開起來,然後把他的stdin,stdout當成檔案 01/09 00:02
: → mars90226:所以你應該在stdin中輸入input,從stdout讀出output 01/09 00:03
: → mars90226:阿抱歉,我說錯了,你需要的是``,不是exec 01/09 01:16
: → mars90226:backticks,可以回傳程式的output 01/09 01:17
: → mars90226:迴圈的話看你的程式怎麼設計,不過``應該都很好用 01/09 01:18
我現在改成像這樣:
`program argument1...`
但是實際執行的結果是 他還是fork另外一個thread去跑 然後繼續執行script本身
#我去Google的結果是backtick有做blocking...我自己的實驗結果卻沒有
而就算改用system 並且做像這樣的動作:
if system(commands)
.....
else
.....
end
也還是另外fork一個thread去跑 script不會停止執行
另外 如果用的是像這樣:
a=open("| ./b "+commands)
a >> result
print result
a.close
也一樣是另外fork一個thread去跑 而且result沒有被印出來就跑後面的script了
exec則是直接取代了現有的process 這也不是我要的
板上有人有建議嗎?

Links booklink

Contact Us: admin [ a t ] ucptt.com