Re: [问题] 关于IO.popen的差异

楼主: kira925 (1 2 3 4 疾风炭)   2013-01-09 16:05:04
: 推 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 这也不是我要的
板上有人有建议吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com