Ruby编程:多任务、多线程与用户界面交互
1. popen3方法相关要点
在使用 popen3 返回的IO流时,有一些注意事项。如果运行的命令需要从标准输入接收数据,在关闭标准输入流之前就从标准输出读取数据,进程会陷入挂起状态。而且, popen3 方法仅在Unix系统上实现,不过 win32 - open3 包(属于Win32Utils项目)提供了 popen3 的实现。
2. 远程控制进程
当需要在另一台机器上运行进程,并远程控制其输入流、读取输出和错误流时,可以使用 ruby - ssh gem。它提供的 popen3 方法与Ruby内置的 popen3 类似,但生成的进程在另一台计算机上运行。
以下是一个示例代码,用于在另一台计算机上运行Unix命令,并将其标准I/O流传递给本地代码块:
require 'rubygems'
require 'net/ssh'
def run_remotely(command, host, args)
Net::SSH.start(host, args) do |session|
session.process.popen3(command) do |stdin, stdout, stderr|
yield stdin, stdout, stderr
end
end
end
run_remot
超级会员免费看
订阅专栏 解锁全文
2490

被折叠的 条评论
为什么被折叠?



