OSX / Clang版本的__progname获取可执行文件的绝对路径?

时间:2015-12-08 20:59:25

标签: c macos clang

我需要从动态链接库中获取正在执行的C程序的绝对路径,在OSX 10.9.5上运行clang版本600.0.57。

我继承了以下库代码

#include <stdio.h>
#include <unistd.h>
#include <string.h>

extern char *__progname ;

char            *
getexecname ()
{
    return __progname ;
}

接近,但__progname仅返回程序的基本名称,而不是完整路径。

argv[0]不可用,因为它位于库中。 Linux / GCC显然有__progname_full,但似乎OSX / clang似乎没有。诸如'/ proc / self / exe'上的readlink()之类的Linux风格的技巧在Mac上不起作用。

__progname是否有一个伴随宏,它提供了可执行文件的完整路径名,如果是,它是什么?

顺便说一下,__progname宏在哪里定义并记录?

由于

1 个答案:

答案 0 :(得分:1)

_NSGetExecutablePath会为你效力吗?