Windows 上我们可以用 GetMuduleName 获得可执行文件的名字。Linux 下应该是 /proc/self/exe,如果只需要获得大概的名字用作帮助信息和诊断报告等,可以用 program_invocation_name 或者 program_invocation_short_name 。
program_invocation_name 是进程被命令行启动时调用的名字,也就是 argv[0]。 program_invocation_short_name 是 program_invocation_name 末尾不含目录的文件名部分。
以下取自 man page。
NAME
program_invocation_name, program_invocation_short_name - obtain name used to invoke calling program
SYNOPSIS
#define _GNU_SOURCE
#include <errno.h>
extern char * program_invocation_name ;
extern char * program_invocation_short_name ;
DESCRIPTION
program_invocation_name contains the name that was used to invoke the calling program.
This is the same as the value of argv[0] in main (), with the difference that the scope of
program_invocation_name is global.
program_invocation_short_name contains the basename component of name that was used
to invoke the calling program. That is, it is the same value as program_invocation_name ,
with all text up to and including the final slash (/), if any, removed.
These variables are automatically initialised by the glibc run-time startup code.
NOTES
The Linux-specific /proc/[number]/cmdline file provides access to similar information.
CONFORMING TO
These variables are GNU extensions, and should not be used in programs intended to be portable.
SEE ALSO
proc (5)