用c写一个程序示例实现在不同平台上获取当前程序进程名
时间: 2023-12-06 15:02:16 浏览: 127
获取正在运行进程的实例
5星 · 资源好评率100%
以下是一个示例程序,可以在不同平台上获取当前程序进程名:
```c
#ifdef _WIN32
#include <windows.h>
#else
#include <unistd.h>
#include <sys/types.h>
#endif
#include <stdio.h>
int main() {
char path[1024];
#ifdef _WIN32
GetModuleFileName(NULL, path, sizeof(path));
#else
pid_t pid = getpid();
snprintf(path, sizeof(path), "/proc/%d/exe", pid);
#endif
printf("Process name: %s\n", path);
return 0;
}
```
在 Windows 平台上,我们使用 `GetModuleFileName` 函数获取当前程序的路径,并从中提取出程序名。
在 Linux 等类 Unix 平台上,我们可以使用 `getpid` 函数获取当前进程的 ID,然后根据进程 ID 打开 `/proc/PID/exe` 文件,其中 `PID` 是进程 ID,这个文件实际上是当前程序的符号链接,链接到程序的二进制文件,我们读取该链接的路径,就可以得到程序名。
注意,在 Linux 等类 Unix 平台上,程序名可能包含路径,因此需要根据实际情况进行处理。此外,以上代码可能需要根据具体平台进行修改,以保证其正确性。
阅读全文