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

楼主: kira925 (1 2 3 4 疾风炭)   2013-01-08 21:51:20
环境: Ruby 1.9.3
状况: 我现在写了一个script去控制另外两个commandline的程式
其中一个程式会吐出给另一个程式需要用的资料
但我现在遇到一个情况是 因为我把它通通写在一个script里面
然后利用IO.popen去呼叫这两个程式执行
但ruby在执行的时候并不会等到第一个程式执行完毕
而是fork出另外一个threading(假设我的推测是对的)去跑第一个程式
自己再接着跑后半段的script, trigger了第二个程式执行
(在她需要的资料未完备的情况下启动)
我想请问的是 有办法确保在第一个程式执行完毕之后 再继续跑script吗?
exec()?
作者: mars90226 (火星人)   2013-01-09 00:01:00
我想你搞错IO.popen了~ 你应该是需要execpopen是把程式开起来,然后把他的stdin,stdout当成档案所以你应该在stdin中输入input,从stdout读出output
楼主: kira925 (1 2 3 4 疾风炭)   2013-01-09 00:43:00
所以exec才是call了以后等他跑完搂?另外 我用循环call了program2 并且要接STDOUT的结果就是要用popen而不是exec?
作者: mars90226 (火星人)   2013-01-09 01:16:00
阿抱歉,我说错了,你需要的是``,不是execbackticks,可以回传程式的output循环的话看你的程式怎么设计,不过``应该都很好用
楼主: kira925 (1 2 3 4 疾风炭)   2013-01-09 01:19:00
``?可以请你回文讲解吗....第一次看到

Links booklink

Contact Us: admin [ a t ] ucptt.com