作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] 关於IO.popen的差异
时间Thu Jan 10 00:50:26 2013
※ 引述《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)
1F:推 kira925:我现在是有怀疑可能是system还没写入档案 01/10 01:03
2F:→ kira925:所以程式已经结束但是还没写入到硬碟 看起来像未结束 01/10 01:03
3F:推 kira925:OK 我发现问题了 感谢您..... 01/10 17:14