如何在c++中结束一个进程
How to end a process in c++?
好的,所以我想写一个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的情况下,当发送和接收进程属于同一会话时就足够了。
相关文章:
- 如何在C++中将函数发送到另一个进程
- 如何从另一个进程解开全局钩子?
- 如何使用带有矢量的 winapi 读取进程内存从另一个进程读取缓冲区?
- 为什么一个进程会挂在RtlExitUserProcess/LdrpDrainWorkQueue中?
- 先进先出:一个进程永远不会从管道读取
- 如何在MPI中将矩阵从一个进程转移到另一个进程
- 将vector<vector<double>>从x86平台中创建的一个进程发送到x64中构建的另一个进程的最快方法是什么
- 带有 QSharedMemory 的 IPC,如果其中一个进程挂起,则存在风险
- 通过 c++ 中的 udp 套接字将派生类对象从一个进程发送到另一个进程
- 如何:监视Windows中另一个进程的文件访问?
- 是否可以注入一个进程并获取给定的句柄,然后使用它们注入另一个进程
- 尝试启动另一个进程并通过 MPI 加入它,但获得访问冲突
- 将窗口句柄从一个进程使用到另一个进程(插件 vst 音频)
- 启动另一个进程的最佳方式C++?
- 在 Linux 下的 Qt,如何检测一个进程已经在运行
- 当一个进程截断 Boost 进程间库创建的共享内存时,进程需要重新映射
- Win32/Gdigrab - 如何将另一个进程窗口设置为无边框
- 为什么我不能用这个函数在Qt框架中打开另一个进程?
- 创建一个进程,指定要在其上运行的 NUMA 节点
- 多次运行程序,同时保留一个进程