代码之家  ›  专栏  ›  技术社区  ›  tig Charlie Martin

运行来自终端的进程阻塞信号

  •  0
  • tig Charlie Martin  · 技术社区  · 14 年前

    如果我从终端运行ruby脚本并使用 system 从它并按ctrl+c,然后int被发送到另一个进程,我如何使ruby进程处理它,而另一个进程根本不获取它?

    例子:

    trap('INT'){ puts 'Wait a bit' }
    system 'sleep 100'
    

    如果我按ctrl+c,这个脚本将立即退出,并且不会打印任何内容:int将只发送到sleep,所以它将退出并完成脚本。

    2 回复  |  直到 14 年前
        1
  •  0
  •   the Tin Man    14 年前

    你可能是在谈论分叉,而不是使用系统。关于 Independent Children 在编程方面,ruby可能会有帮助。

    或者,您可能正在讨论将子应用程序作为独立应用程序完全与父应用程序分离,以便如果父应用程序退出,子应用程序将继续运行,如httpd服务器等。我没试过但是 Daemons 听起来效果不错。

        2
  •  0
  •   William Exander    14 年前

    你可以陷阱 INT 然后退出,使用 trap("INT") { exit } . 像格雷格一样,不确定这是否是你想要的,但这可能是值得关注的。