作者kira925 (1 2 3 4 疾风炭)
看板Ruby
标题[问题] 关於IO.popen的差异
时间Tue Jan 8 21:51:20 2013
环境: Ruby 1.9.3
状况: 我现在写了一个script去控制另外两个commandline的程式
其中一个程式会吐出给另一个程式需要用的资料
但我现在遇到一个情况是 因为我把它通通写在一个script里面
然後利用IO.popen去呼叫这两个程式执行
但ruby在执行的时候并不会等到第一个程式执行完毕
而是fork出另外一个threading(假设我的推测是对的)去跑第一个程式
自己再接着跑後半段的script, trigger了第二个程式执行
(在她需要的资料未完备的情况下启动)
我想请问的是 有办法确保在第一个程式执行完毕之後 再继续跑script吗?
exec()?
--
● ˍ▃ˍ ● 好人不应该受制於正妹
◢↘ 囧 ↙◣ 而是正妹应该要考虑好人
// ╰︰╯ \\
aokman █◣ˍ_ 囧 for 囧rz 囧怪客
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.49.86
1F:推 mars90226:我想你搞错IO.popen了~ 你应该是需要exec 01/09 00:01
2F:→ mars90226:popen是把程式开起来,然後把他的stdin,stdout当成档案 01/09 00:02
3F:→ mars90226:所以你应该在stdin中输入input,从stdout读出output 01/09 00:03
4F:→ kira925:所以exec才是call了以後等他跑完搂? 01/09 00:43
5F:→ kira925:另外 我用回圈call了program2 并且要接STDOUT的结果 01/09 00:44
6F:→ kira925:就是要用popen而不是exec? 01/09 00:45
7F:→ mars90226:阿抱歉,我说错了,你需要的是``,不是exec 01/09 01:16
8F:→ mars90226:backticks,可以回传程式的output 01/09 01:17
9F:→ mars90226:回圈的话看你的程式怎麽设计,不过``应该都很好用 01/09 01:18
10F:→ kira925:``? 01/09 01:19
11F:→ kira925:可以请你回文讲解吗....第一次看到 01/09 01:19