Ruby调用shell命令 _Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby调用shell命令

Ruby调用shell命令

 2011/9/29 8:03:58  Goldice  http://jdoc.iteye.com  我要评论(0)
  • 摘要:原来发在diandian的几篇旧闻,也一并转到iteye上来吧。1.execexec'echo"hello$HOSTNAME"'用echo命令来取代当前进程,无法知道命令是否成功2.systemsystem('echo"hello$HOSTNAME"')运行一个子shell来避免覆盖当前进程,运行成功返回true,运行失败返回false3.··反引号`echo$HOSTNAME`运行一个子shell来避免覆盖当前进程,可以接受命令执行结果4.IO.popendefrun(command
  • 标签:

?

原来发在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.

?

?

  • 相关文章
发表评论
用户名: 匿名