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

看板Ruby作者 (godfat 真常)時間12年前 (2013/01/10 00:50), 編輯推噓2(201)
留言3則, 1人參與, 最新討論串3/3 (看更多)
※ 引述《kira925 (1 2 3 4 疾風炭)》之銘言: : : 推 mars90226:我想你搞錯IO.popen了~ 你應該是需要exec 01/09 00 : : → mars90226:popen是把程式開起來,然後把他的stdin,stdout當成檔案 01/09 00 : : → mars90226:所以你應該在stdin中輸入input,從stdout讀出output 01/09 00 : : → mars90226:阿抱歉,我說錯了,你需要的是``,不是exec 01/09 01 : : → mars90226:backticks,可以回傳程式的output 01/09 01 : : → mars90226:迴圈的話看你的程式怎麼設計,不過``應該都很好用 01/09 01 : 我現在改成像這樣: : `program argument1...` : 但是實際執行的結果是 他還是fork另外一個thread去跑 然後繼續執行script本身 雖然 spawning process 底層是 fork, 但 ruby 本身有 fork method, 這邊講 fork 怪怪的。另外這也跟 thread 沒什麼關係 IO.popen 不是 blocking 的,但是 ` 是 blocking 的,你可以試試 `sleep 100000` 驗證看看。我懷疑你另外呼叫的程式可能沒正確呼叫到, 因此提早結束,就以為不是 blocking 的 -- By Gamers, For Gamers - from the past Interplay -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.38.235 ※ 編輯: godfat 來自: 220.135.38.235 (01/10 00:51)

01/10 01:03, , 1F
我現在是有懷疑可能是system還沒寫入檔案
01/10 01:03, 1F

01/10 01:03, , 2F
所以程式已經結束但是還沒寫入到硬碟 看起來像未結束
01/10 01:03, 2F

01/10 17:14, , 3F
OK 我發現問題了 感謝您.....
01/10 17:14, 3F
文章代碼(AID): #1GxP_L1X (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1GxP_L1X (Ruby)