为了对PPCG.SE的挑战,我想运行程序(提交)有严格的时间限制。 为了不使I / O浪费宝贵的时间,我想运行下面的scheme:
然而,提交应该可以select不注册信号处理程序,只是在自己的时间产生输出。
我将在Windows 8上运行提交,并希望使用Ruby进行编排。 但是,我遇到了一些麻烦。 我以为我能做到这一点:
solver = IO.popen(solver_command, 'r+') sleep(10*60) Process.kill('INT', solver.pid) sleep(1) Process.kill('KILL', solver.pid) puts solver.read solver.close
但是,当我发送SIGINT
,不仅提交过程,而且控制Ruby进程也立即中止! 更糟糕的是,如果我在PowerShell中执行此操作,PowerShell也会closures。
一个简单的Ruby“提交”来重现这一点:
puts "My result" $stdout.flush next while true
我在这里做错了什么? 我觉得我很可能误解了一些关于stream程和信号的东西,尤其是Ruby,但是我肯定错过了一些东西。