有没有办法同步这个?

时间:2010-10-25 22:21:02

标签: ruby

ruby​​中是否有同步的exec?我尝试下面的代码,当我打开文件时,我什么也得不到,这可能是因为exec没有完成文件的写入。

exec "sort data.txt > data.sort"
File.foreach("data.sort") { |line| puts line}

泰德

2 个答案:

答案 0 :(得分:4)

您正在寻找system,而不是exec。但是,如果你使用返回命令输出的反引号,它会比那更容易。

puts `sort data.txt`

如果需要迭代,则可以直接迭代返回值:

sorted = `sort data.txt`
sorted.each do |line|
  puts line
end

甚至:

`sort data.txt`.each do |line|
  puts line
end

答案 1 :(得分:3)

exec将当前进程替换为您正在执行的进程;在exec完全运行之后什么也没有!您可能需要system