用c++写一个程序示例实现在不同平台上获取当前程序进程名
时间: 2023-12-06 14:02:17 浏览: 73
以下是一个简单的示例程序,可以在不同平台上获取当前程序进程名:
```c++
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#elif defined(__linux__)
#include <unistd.h>
#endif
#include <iostream>
#include <string>
std::string getProcessName() {
std::string name;
#if defined(_WIN32) || defined(_WIN64)
char buffer[MAX_PATH];
GetModuleFileNameA(NULL, buffer, MAX_PATH);
name = buffer;
#elif defined(__linux__)
char buffer[PATH_MAX];
ssize_t len = readlink("/proc/self/exe", buffer, sizeof(buffer)-1);
if (len != -1) {
buffer[len] = '\0';
name = buffer;
}
#endif
size_t pos = name.find_last_of("\\/");
if (pos != std::string::npos) {
name = name.substr(pos + 1);
}
return name;
}
int main() {
std::cout << "Process name: " << getProcessName() << std::endl;
return 0;
}
```
该程序使用了不同平台上的不同方法来获取当前程序的进程名。在 Windows 平台上,它使用了 WinAPI 函数 GetModuleFileNameA 来获取程序路径,然后从中提取出进程名。在 Linux 平台上,它通过读取 /proc/self/exe 符号链接来获取程序路径,然后同样提取出进程名。最后,程序将进程名输出到控制台。
阅读全文