2010-04-27 87 views
0

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

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

回答

1

这种问题的经典参考是Steven的“UNIX环境下的高级编程”。你可以找到这本教科书here的源代码。

1

取决于您的应用程序的功能。

就我个人而言,我会保留一个线程来处理信号,并在其他线程中调用sigprocmask来停止将信号传递给它们。

主线程/信号处理线程(这通常是一个好主意,使其成为主线程)可以发送一条消息给其线程,告诉他们完成他们正在做的和退出。

或者,如果你喜欢的原理碰撞而已,你可以只调用exit_group与它:)做

+0

@MarkR什么是主线程可以发送消息给其他工作线程的最佳方式终止 – Poorna 2010-04-30 11:18:55

+0

这真的取决于其他线程正在做什么。在很多情况下,设置全局变量可能就足够了。如果其他线程正在等待某些内容,则需要将其唤醒。有很多秘籍,比如有一个你发送单个字节的命名管道。 – MarkR 2010-04-30 13:47:14