作者kira925 (1 2 3 4 疾风炭)
看板Ruby
标题Re: [问题] 关於IO.popen的差异
时间Wed Jan 9 16:05:04 2013
: 推 mars90226:我想你搞错IO.popen了~ 你应该是需要exec 01/09 00:01
: → mars90226:popen是把程式开起来,然後把他的stdin,stdout当成档案 01/09 00:02
: → mars90226:所以你应该在stdin中输入input,从stdout读出output 01/09 00:03
: → mars90226:阿抱歉,我说错了,你需要的是``,不是exec 01/09 01:16
: → mars90226:backticks,可以回传程式的output 01/09 01:17
: → mars90226:回圈的话看你的程式怎麽设计,不过``应该都很好用 01/09 01:18
我现在改成像这样:
`program argument1...`
但是实际执行的结果是 他还是fork另外一个thread去跑 然後继续执行script本身
#我去Google的结果是backtick有做blocking...我自己的实验结果却没有
而就算改用system 并且做像这样的动作:
if system(commands)
.....
else
.....
end
也还是另外fork一个thread去跑 script不会停止执行
另外 如果用的是像这样:
a=open("| ./b "+commands)
a >> result
print result
a.close
也一样是另外fork一个thread去跑 而且result没有被印出来就跑後面的script了
exec则是直接取代了现有的process 这也不是我要的
板上有人有建议吗?
--
● ˍ▃ˍ ● 好人不应该受制於正妹
◢↘ 囧 ↙◣ 而是正妹应该要考虑好人
// ╰︰╯ \\
aokman █◣ˍ_ 囧 for 囧rz 囧怪客
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.28.197
※ 编辑: kira925 来自: 140.113.28.197 (01/09 16:12)
※ 编辑: kira925 来自: 140.113.28.197 (01/09 16:21)
※ 编辑: kira925 来自: 140.113.28.197 (01/09 16:27)