如何在C中获取进程名称?同名,在/proc/$pid/status
.我不想解析该文件.有没有任何程序化的方法来做到这一点?
小智 36
如果你正在使用glibc,那么:
#define _GNU_SOURCE
#include <errno.h>
extern char *program_invocation_name;
extern char *program_invocation_short_name;
Run Code Online (Sandbox Code Playgroud)
见program_invocation_name(3)
在大多数Unices下,__progname
也是由libc定义的.唯一的便携方式是使用argv[0]
Mic*_*ker 25
它或者指向argv[0]
或者你可以阅读/proc/self/status
.或者你可以使用getenv("_")
,不确定是谁设置它以及它有多可靠.
raj*_*gt1 15
你可以用__progname
.然而,它并不比argv[0]
它可能具有可移植性问题更好.但由于您无法访问argv[0]
它,因此可以按如下方式工作: -
extern char *__progname;
printf("\n%s", __progname);
Run Code Online (Sandbox Code Playgroud)
我经常使用以下电话,
char* currentprocname = getprogname();
Run Code Online (Sandbox Code Playgroud)