我在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()来杀死这个过程。
答案 0 :(得分:0)
这可能是许可问题。 使用
打印流程ID'getpid();'
从终端手动杀死它。
'sudo kill -9 processid'