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