如何在c++中结束一个进程

How to end a process in c++?

本文关键字:一个 进程 结束 c++      更新时间:2023-10-16

好的,所以我想写一个c++程序,它可以结束当前运行的特定进程。我在互联网上搜索过,发现的解决方案对我来说都没有意义。有简单的方法来结束一个过程吗?

在POSIX上,调用kill(3)SIGTERM发送到进程。在Windows上,您可以调用TerminateProcess()

假设您在*nix平台上,并且您有进程ID(即您自己派生的进程使用了其他方法来推断其pid),则使用kill(2)应该可以:

#include <sys/types.h>
#include <signal.h>
void main() {
    /* ... */
    pid_t pid = ???;
    kill(pid, SIGTERM);
}

不过,它只能在特定条件下工作:

要使进程具有发送信号的权限,它必须具有特权(在Linux下:具有CAP_KILL功能),或者发送进程的真实或有效用户ID必须等于目标进程的真实用户ID或保存集用户ID。在SIGCONT的情况下,当发送和接收进程属于同一会话时就足够了。