如果我从终端运行ruby脚本并使用system
从其中运行其他进程并按Ctrl + C,那么INT将被发送到另一个进程,如何让ruby进程处理它和另一个进程过程根本没有得到它?
示例:
trap('INT'){ puts 'Wait a bit' }
system 'sleep 100'
如果按Ctrl + C,此脚本将立即退出并且不会打印任何内容:INT将仅发送到睡眠状态,因此它将退出并且脚本将完成。
答案 0 :(得分:0)
你可能在谈论分叉,而不是使用系统。编程Ruby中的Independent Children
部分可能有所帮助。
或者,您可能正在讨论将子项与父项完全分离作为独立应用程序运行,以便在父项退出子项时继续运行,如httpd服务器等。我没有尝试过,但是Daemons
听起来很有效。
答案 1 :(得分:0)
您可以使用INT
捕获trap("INT") { exit }
并退出。像格雷格一样,不确定这是否是你想要的,但它可能是值得关注的东西。