【发布时间】:2011-02-12 23:33:15
【问题描述】:
我是 linux 新手,用 C++ 编写一个服务,它产生多个线程,我通过从 init.d 调用它来启动服务,但是我应该如何从脚本向我的应用程序发送终止信号,以便我的服务终止所有线程并退出。
我在哪里可以找到任何 linux 服务的源代码。例如/etc.init.d/rc5.d/S14cron 。这将有助于理解如何实现服务。
【问题讨论】:
我是 linux 新手,用 C++ 编写一个服务,它产生多个线程,我通过从 init.d 调用它来启动服务,但是我应该如何从脚本向我的应用程序发送终止信号,以便我的服务终止所有线程并退出。
我在哪里可以找到任何 linux 服务的源代码。例如/etc.init.d/rc5.d/S14cron 。这将有助于理解如何实现服务。
【问题讨论】:
此类问题的经典参考资料是 Steven 的“UNIX 环境中的高级编程”。你可以找到本书的源代码here。
【讨论】:
取决于您的应用程序做什么。
我个人会保留一个线程仅用于处理信号并在其他线程中调用 sigprocmask 以停止将信号传递给它们。
主线程/信号处理线程(将其设为主线程通常是个好主意)然后可以向其线程发送消息,告诉它们完成正在做的事情并退出。
或者,如果您喜欢仅崩溃的原则,您可以调用 exit_group 并完成它:)
【讨论】: