POPEN,获取某个进程的进程号并杀死
时间: 2023-09-09 07:13:30 浏览: 115
使用 POPEN 可以获取某个进程的进程号,然后使用系统调用 kill 命令杀死该进程。
下面是一个示例代码:
```c++
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
// 检查参数
if (argc != 2) {
cerr << "Usage: " << argv[0] << " process_name" << endl;
return 1;
}
// 构造命令
char cmd[1024];
snprintf(cmd, sizeof(cmd), "pidof %s", argv[1]);
// 执行命令
FILE *fp = popen(cmd, "r");
if (!fp) {
cerr << "popen failed: " << strerror(errno) << endl;
return 1;
}
// 读取进程号
char buf[1024];
if (!fgets(buf, sizeof(buf), fp)) {
cerr << "fgets failed: " << strerror(errno) << endl;
return 1;
}
// 关闭文件指针
pclose(fp);
// 将进程号转换为整数
int pid = atoi(buf);
if (pid <= 0) {
cerr << "pidof failed: " << buf << endl;
return 1;
}
cout << "pid: " << pid << endl;
// 杀死进程
if (kill(pid, SIGTERM) != 0) {
cerr << "kill failed: " << strerror(errno) << endl;
return 1;
}
return 0;
}
```
该程序接受一个进程名作为参数,使用命令 `pidof` 获取进程号,然后使用系统调用 `kill` 杀死该进程。注意,需要在程序中包含头文件 `<signal.h>` 和 `<errno.h>`。
阅读全文