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

作者: kira925 (1 2 3 4 疾風炭)   2013-01-08 21:51:20
環境: Ruby 1.9.3
狀況: 我現在寫了一個script去控制另外兩個commandline的程式
其中一個程式會吐出給另一個程式需要用的資料
但我現在遇到一個情況是 因為我把它通通寫在一個script裡面
然後利用IO.popen去呼叫這兩個程式執行
但ruby在執行的時候並不會等到第一個程式執行完畢
而是fork出另外一個threading(假設我的推測是對的)去跑第一個程式
自己再接著跑後半段的script, trigger了第二個程式執行
(在她需要的資料未完備的情況下啟動)
我想請問的是 有辦法確保在第一個程式執行完畢之後 再繼續跑script嗎?
exec()?
作者: mars90226 (火星人)   2013-01-09 00:01:00
我想你搞錯IO.popen了~ 你應該是需要execpopen是把程式開起來,然後把他的stdin,stdout當成檔案所以你應該在stdin中輸入input,從stdout讀出output
作者: kira925 (1 2 3 4 疾風炭)   2013-01-09 00:43:00
所以exec才是call了以後等他跑完搂?另外 我用迴圈call了program2 並且要接STDOUT的結果就是要用popen而不是exec?
作者: mars90226 (火星人)   2013-01-09 01:16:00
阿抱歉,我說錯了,你需要的是``,不是execbackticks,可以回傳程式的output迴圈的話看你的程式怎麼設計,不過``應該都很好用
作者: kira925 (1 2 3 4 疾風炭)   2013-01-09 01:19:00
``?可以請你回文講解嗎....第一次看到

Links booklink

Contact Us: admin [ a t ] ucptt.com