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

看板Ruby作者 (1 2 3 4 疾風炭)時間12年前 (2013/01/08 21:51), 編輯推噓1(1010)
留言11則, 2人參與, 最新討論串1/3 (看更多)
環境: 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

01/09 00:01, , 1F
我想你搞錯IO.popen了~ 你應該是需要exec
01/09 00:01, 1F

01/09 00:02, , 2F
popen是把程式開起來,然後把他的stdin,stdout當成檔案
01/09 00:02, 2F

01/09 00:03, , 3F
所以你應該在stdin中輸入input,從stdout讀出output
01/09 00:03, 3F

01/09 00:43, , 4F
所以exec才是call了以後等他跑完搂?
01/09 00:43, 4F

01/09 00:44, , 5F
另外 我用迴圈call了program2 並且要接STDOUT的結果
01/09 00:44, 5F

01/09 00:45, , 6F
就是要用popen而不是exec?
01/09 00:45, 6F

01/09 01:16, , 7F
阿抱歉,我說錯了,你需要的是``,不是exec
01/09 01:16, 7F

01/09 01:17, , 8F
backticks,可以回傳程式的output
01/09 01:17, 8F

01/09 01:18, , 9F
迴圈的話看你的程式怎麼設計,不過``應該都很好用
01/09 01:18, 9F

01/09 01:19, , 10F
``?
01/09 01:19, 10F

01/09 01:19, , 11F
可以請你回文講解嗎....第一次看到
01/09 01:19, 11F
文章代碼(AID): #1Gx2HRZd (Ruby)
文章代碼(AID): #1Gx2HRZd (Ruby)