为了账号安全,请及时绑定邮箱和手机立即绑定

在没有/proc/Self/exe的情况下查找当前可执行文件的路径

在没有/proc/Self/exe的情况下查找当前可执行文件的路径

C++ C
凤凰求蛊 2019-06-17 16:56:26
在没有/proc/Self/exe的情况下查找当前可执行文件的路径在我看来,Linux很容易使用/proc/Self/exe。但是,我想知道是否有一种方便的方法可以在C/C+中找到具有跨平台接口的当前应用程序的目录。我见过一些项目与argv[0]混在一起,但看起来并不完全可靠。如果您必须支持MacOSX,它没有/proc/,您会怎么做?使用#ifdefs隔离特定于平台的代码(例如NSBundle)?或者尝试从argv[0]、$path和诸如此类推断可执行文件的路径,这样可能会在边缘情况下发现bug?
查看完整描述

3 回答

?
慕容708150

TA贡献1831条经验 获得超4个赞

一些特定于操作系统的接口:

可移植(但不太可靠)的方法是使用argv[0]..虽然调用程序可以将其设置为任何内容,但按照惯例,它被设置为可执行文件的路径名或使用$PATH.

一些炮弹,包括bash和ksh,设置环境变量“_"执行可执行文件的完整路径。在这种情况下,您可以使用getenv("_")为了得到它。但是,这是不可靠的,因为并不是所有的shell都会这样做,而且它可以设置为任何东西,或者是在执行程序之前没有改变它的父进程留下的。


查看完整回答
反对 回复 2019-06-17
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

检查一下在哪里库来自GregoryPakosz(它只有一个C文件);它允许您在各种平台上获得当前可执行文件的完整路径。目前,它可以在GitHub上作为回购工具使用。这里.


查看完整回答
反对 回复 2019-06-17
  • 3 回答
  • 0 关注
  • 1687 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信