我目前正在创建一个ruby脚本,它接受一个python脚本并打印输出。 ruby代码与here:
大致相同begin
PTY.spawn("python temp.py") do |stdout, stdin, pid|
begin
stdout.each { |line| print line }
rescue Errno::EIO
puts ""
end
end
rescue PTY::ChildExited
puts "The child process exited!"
end
为了测试,python代码很简单:
for each in range(10):
print each
raw_input(">")
运行ruby文件时,它会打印0到10,然后挂起而不打印“>”符号。这是预期的,因为Python正在等待用户输入。
然而,是否可以让PTY打印0到10,“>”符号,然后结束这个过程呢?要做到这一点,我认为Ruby必须检查PTY是否在等待输入,但是如何做呢?