如何用c ++结束进程?

时间:2011-06-19 20:28:03

标签: c++ process termination

好的,所以我想编写一个可以结束当前正在运行的特定进程的c ++程序。我搜索过互联网,我遇到的解决方案都没有对我有意义。是否有一种结束流程的简单方法?

2 个答案:

答案 0 :(得分:5)

在POSIX上,您致电kill(3)向该流程发送SIGTERM。在Windows上,您可以拨打TerminateProcess()

答案 1 :(得分:0)

假设您在* nix平台上并且您拥有进程ID(即您自己使用其他方法生成该进程以推断其pid),使用kill(2)应该可以正常工作:

#include <sys/types.h>
#include <signal.h>

void main() {
    /* ... */
    pid_t pid = ???;
    kill(pid, SIGTERM);
}

但它只能在某些条件下工作:

  

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