Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Ruby on Windows XP中进行系统调用时超时问题_Ruby_Windows_Shellexecute - Fatal编程技术网

在Ruby on Windows XP中进行系统调用时超时问题

在Ruby on Windows XP中进行系统调用时超时问题,ruby,windows,shellexecute,Ruby,Windows,Shellexecute,下面的代码 require 'timeout' begin timeout(20) do # Line 4 result = `hostname` end # Line 6 rescue Timeout::Error puts "Timeout" exit end puts "Result:" + result # Line 12 抛出错误 问题.rb:12:in”:未定义的局部变

下面的代码

require 'timeout'

begin
  timeout(20) do              # Line 4
    result = `hostname`
  end                         # Line 6
rescue Timeout::Error
  puts "Timeout"
  exit
end

puts "Result:" + result       # Line 12
抛出错误

问题.rb:12:in
”:未定义的局部变量或方法
主:对象(名称错误)

但是如果我注释掉timeout元素(第4行和第6行),它就可以正常工作。我尝试过使用IO.popen、IO.select等,但这些都没有帮助。我在许多其他领域使用过这种超时技术,效果很好

它似乎与超时值无关,因为我已经用更大和更小的值进行了实验

我在Windows XP上使用Ruby 1.92。非常感谢您的帮助


p、 我最初的问题不是运行“主机名”,而是更复杂的SQL Server批处理作业。作为奖励,是否会自动终止超过超时的长时间运行的系统任务?我读过很多关于超时库在忙于运行系统任务时不遵守超时的帖子。

超时块中定义了
结果
变量,因此它在外部范围中不可见。您应该在执行以下操作之前对其进行初始化:

result = nil 
begin
  timeout(20) do              # Line 4
    result = `hostname`
  end                         # Line 6
rescue Timeout::Error
...

result
变量是在超时块中定义的,因此它在外部范围中不可见。您应该在执行以下操作之前对其进行初始化:

result = nil 
begin
  timeout(20) do              # Line 4
    result = `hostname`
  end                         # Line 6
rescue Timeout::Error
...

谢谢你的修复。整个上午都在烦我。谢谢你的修理。整个上午都在烦我。