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