使用SIGTERM的kill()系统调用无效

时间:2014-05-27 11:09:32

标签: c++ c process kill-process

我在ubuntu中使用c ++创建了一个二进制文件,它将作为守护进程运行并从数据库中读取数据并将其存储到xml文件中。

并且为了停止守护进程我正在使用此功能,但它无法正常工作。

void stopService()
{
    int mypid;

    if(((mypid = validate_pid()) > 0) || ((mypid = validate_non_pid()) > 0)) {


        if(0 == kill(mypid, SIGTERM) ) {

            sleep(1);
        }
        else {
            printf("Stopping %s  [FAILED]\n", Service);// this line is getting printed.
        }

    }
    else {
        printf("Stopping %s  [ Failed ] Not Running....\n", Service);
    }

}

我将输出视为停止服务[失败]。

'validate_pid()' It will written the pid from /proc/some id/cmdline.

和     ' validate_non_pid()'它将使用pgrep编写pid。

我不是在编写完整的代码,因为它会变得冗长,

提前致谢。

并且我通过获取命令行参数并在switch()中使用它来调用此函数;     ' case' e':         stopService();'

所以我怎么能用kill()来杀死这个过程。

1 个答案:

答案 0 :(得分:0)

这可能是许可问题。  使用

打印流程ID
'getpid();'

从终端手动杀死它。

'sudo kill -9 processid'