【问题标题】:Linux service and Source for cron job用于 cron 作业的 Linux 服务和源
【发布时间】:2011-02-12 23:33:15
【问题描述】:

我是 linux 新手,用 C++ 编写一个服务,它产生多个线程,我通过从 init.d 调用它来启动服务,但是我应该如何从脚本向我的应用程序发送终止信号,以便我的服务终止所有线程并退出。

我在哪里可以找到任何 linux 服务的源代码。例如/etc.init.d/rc5.d/S14cron 。这将有助于理解如何实现服务。

【问题讨论】:

    标签: linux service init.d


    【解决方案1】:

    此类问题的经典参考资料是 Steven 的“UNIX 环境中的高级编程”。你可以找到本书的源代码here

    【讨论】:

      【解决方案2】:

      取决于您的应用程序做什么。

      我个人会保留一个线程仅用于处理信号并在其他线程中调用 sigprocmask 以停止将信号传递给它们。

      主线程/信号处理线程(将其设为主线程通常是个好主意)然后可以向其线程发送消息,告诉它们完成正在做的事情并退出。

      或者,如果您喜欢仅崩溃的原则,您可以调用 exit_group 并完成它:)

      【讨论】:

      • @MarkR 主线程可以向其他工作线程发送消息以终止的最佳方式是什么
      • 这真的取决于其他线程在做什么。在许多情况下,设置一个全局变量可能就足够了。如果其他线程正在等待某些东西,那么有必要唤醒它们。有很多作弊方法,例如使用命名管道发送单个字节。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 2018-11-18
      • 2012-06-07
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多