我想运行一个在 openSUSE 12 上使用 POSIX 线程作为守护进程的 c++ 程序,并且能够使用基于此模板的普通 init.d 脚本作为服务启动、停止和重新启动它:http://www.novell .com/coolsolutions/feature/15380.html。
然而事实证明 startproc 和 killproc 不适合处理内核线程(显然是 POSIX 线程)。我设法用 startproc 启动程序,但它没有被 killproc 识别和杀死。rc_status 在运行 startproc 时返回红色“failed”,即使程序实际已启动,并且在运行 killproc 时返回绿色“done”,即使它没有杀死进程。
有没有在 openSUSE 12 上使用 startproc/killproc 的替代方法?如果一个人用一个简单的 nohup 启动服务,那么它是如何正常停止的呢?只是杀了它?在那种情况下,获取“kill”所需的pid的好方法是什么?