作者kira925 (1 2 3 4 疾風炭)
看板Ruby
標題[問題] 關於IO.popen的差異
時間Tue Jan 8 21:51:20 2013
環境: Ruby 1.9.3
狀況: 我現在寫了一個script去控制另外兩個commandline的程式
其中一個程式會吐出給另一個程式需要用的資料
但我現在遇到一個情況是 因為我把它通通寫在一個script裡面
然後利用IO.popen去呼叫這兩個程式執行
但ruby在執行的時候並不會等到第一個程式執行完畢
而是fork出另外一個threading(假設我的推測是對的)去跑第一個程式
自己再接著跑後半段的script, trigger了第二個程式執行
(在她需要的資料未完備的情況下啟動)
我想請問的是 有辦法確保在第一個程式執行完畢之後 再繼續跑script嗎?
exec()?
--
● ˍ▃ˍ ● 好人不應該受制於正妹
◢↘ 囧 ↙◣ 而是正妹應該要考慮好人
// ╰︰╯ \\
aokman █◣ˍ_ 囧 for 囧rz 囧怪客
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.49.86
1F:推 mars90226:我想你搞錯IO.popen了~ 你應該是需要exec 01/09 00:01
2F:→ mars90226:popen是把程式開起來,然後把他的stdin,stdout當成檔案 01/09 00:02
3F:→ mars90226:所以你應該在stdin中輸入input,從stdout讀出output 01/09 00:03
4F:→ kira925:所以exec才是call了以後等他跑完搂? 01/09 00:43
5F:→ kira925:另外 我用迴圈call了program2 並且要接STDOUT的結果 01/09 00:44
6F:→ kira925:就是要用popen而不是exec? 01/09 00:45
7F:→ mars90226:阿抱歉,我說錯了,你需要的是``,不是exec 01/09 01:16
8F:→ mars90226:backticks,可以回傳程式的output 01/09 01:17
9F:→ mars90226:迴圈的話看你的程式怎麼設計,不過``應該都很好用 01/09 01:18
10F:→ kira925:``? 01/09 01:19
11F:→ kira925:可以請你回文講解嗎....第一次看到 01/09 01:19