?
原来发在diandian的几篇旧闻,也一并转到iteye上来吧。
?
1. exec
exec 'echo "hello $HOSTNAME"'
用echo命令来取代当前进程,无法知道命令是否成功
2. system
system('echo "hello $HOSTNAME"')
运行一个子shell来避免覆盖当前进程,运行成功返回true,运行失败返回false
3. ·· 反引号?
?
`echo $HOSTNAME`
运行一个子shell来避免覆盖当前进程,可以接受命令执行结果
4.?IO.popen
def run(command, input='') IO.popen(command, 'r+') do |io| io.puts input io.close_write return io.read end end run 'wc -w', 'How many words are in this string?'
?
IO.popenis a good way to run noninteractive commandscommands that?read?
all their standard input?at once?and produce some output.
5. Open3#open3
require 'open3' Open3.popen3('bc') do | stdin, stdout, stderr | Thread.new { loop { puts "STDOUT stream: #{stdout.gets}" } } Thread.new { loop { puts "STDERR stream: #{stderr.gets}" } } stdin.puts "3 * 4" stdin.puts "1 / 0" stdin.puts "2 ^ 5" sleep 0.1 end
? ? Runs a command in a subprocess. Data written to stdin can be read by the subprocess, anddata written to standard output and standard error in the subprocess will be available on thestdout and stderr streams.
?
?