请考虑以下Ruby脚本:
fork do
loop do
sleep 1
end
end
当我在通过SSH连接的Linux服务器上运行此脚本时,关闭SSH连接随后会挂起(我必须通过键入~ + RETURN
退出它,否则连接会保持打开/挂起。我使用的是ruby 3.0.1p64
,服务器操作系统是Fedora。
甚至在从派生进程分离时也会出现此问题:
pid = fork do
loop do
sleep 1
end
end
Process.detach(pid)
解决这个问题的方法是将stdout和stderr重定向到/dev/null
,但我需要父进程的输出可见,因此这不是一个可行的解决方案:
ruby script.rb < /dev/null >& /dev/null
为什么会这样?有什么办法吗?
1条答案
按热度按时间ao218c7q1#
找到了解决办法: