好的,所以我想编写一个可以结束当前正在运行的特定进程的c ++程序。我搜索过互联网,我遇到的解决方案都没有对我有意义。是否有一种结束流程的简单方法?
答案 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的情况下,当发送和接收进程属于同一会话时就足够了。