C++ 获取进程的命令行
时间: 2024-12-11 09:37:43 浏览: 22
在C++中,获取运行中的进程及其命令行参数通常不是直接通过库函数完成的,因为C++标准库并不提供这样的功能。但是你可以利用操作系统提供的API或者第三方工具来实现这个需求。在Linux系统中,可以使用`ps`、`popen`, `getline`等函数结合C++来读取 `/proc/PID/cmdline` 文件,其中PID是你要查询的进程ID。
例如,下面是一个简单的示例,展示如何使用`popen`和`getline`从`/proc`目录获取命令行信息:
```cpp
#include <iostream>
#include <cstdio>
#include <cstdlib>
std::string getCommandLine(int pid) {
std::ifstream processInfo("/proc/" + std::to_string(pid) + "/cmdline");
if (!processInfo.is_open()) {
return "Failed to open process info";
}
std::string commandLine;
char line[CMDLINE_SIZE];
while (getline(processInfo, line)) {
commandLine += line;
commandLine += ' ';
}
processInfo.close();
return commandLine;
}
int main() {
int pid = 1234; // 替换为你想查询的实际进程ID
std::string cmd = getCommandLine(pid);
std::cout << "Command line for PID " << pid << ": " << cmd << std::endl;
return 0;
}
```
注意这只是一个基本示例,并非跨平台解决方案,实际操作可能需要处理错误情况以及文件权限问题。如果你是在Windows环境中,可以考虑使用Windows API的`CreateToolhelp32Snapshot`和`Process32First`函数,但这会更复杂一些。
阅读全文