用c写一个程序示例实现在linux,qnx,android获取当前程序进程名
时间: 2024-02-03 14:13:06 浏览: 121
以下是一个示例程序,可以在Linux、QNX和Android上获取当前程序进程名:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef __linux__
#include <unistd.h>
#elif defined(__QNX__)
#include <sys/neutrino.h>
#elif defined(__ANDROID__)
#include <unistd.h>
#include <sys/types.h>
#endif
int main(int argc, char *argv[]) {
char process_name[256];
#ifdef __linux__
readlink("/proc/self/exe", process_name, sizeof(process_name)-1);
#elif defined(__QNX__)
proc_info(PRC_PROC_PATH, getpid(), process_name, sizeof(process_name)-1);
#elif defined(__ANDROID__)
int pid = getpid();
char cmdline_path[32];
snprintf(cmdline_path, sizeof(cmdline_path), "/proc/%d/cmdline", pid);
FILE* fp = fopen(cmdline_path, "r");
if(fp != NULL) {
fgets(process_name, sizeof(process_name), fp);
fclose(fp);
}
#endif
printf("Process name: %s\n", strrchr(process_name, '/')+1);
return 0;
}
```
该程序使用了不同操作系统下的不同方法来获取当前程序的进程名。在Linux上,它使用`readlink`函数读取`/proc/self/exe`符号链接,该链接指向当前可执行文件的路径。在QNX上,它使用`proc_info`函数获取当前进程信息,其中包括进程路径。在Android上,它打开`/proc/<pid>/cmdline`文件并读取第一行,其中包含进程名。
无论在哪个平台上,程序都会输出当前进程名。在Linux上,这可能会包含路径,因此我们使用`strrchr`函数来提取文件名部分。
阅读全文