gpt4 book ai didi

c++ - 使用 SIGTERM 的 kill() 系统调用不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:34 25 4
gpt4 key购买 nike

我在 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() 中使用它来调用此函数; '案例'e': 停止服务();'

那么我如何使用 kill() 终止这个进程。

最佳答案

这可能是权限问题。 使用

打印进程 ID
'getpid();'

从终端手动杀死它。

'sudo kill -9 processid'

关于c++ - 使用 SIGTERM 的 kill() 系统调用不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23887878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com