gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:28:40 25 4
gpt4 key购买 nike

在我看来,Linux 使用/proc/self/exe 很容易。但我想知道是否有一种方便的方法可以使用跨平台接口(interface)在 C/C++ 中找到当前应用程序的目录。我见过一些使用 argv[0] 的项目,但它似乎并不完全可靠。

如果你必须支持没有/proc/的 Mac OS X,你会怎么做?使用#ifdefs 隔离特定于平台的代码(例如NSBundle)?或者尝试从 argv[0]、$PATH 等推断可执行文件的路径,冒着在极端情况下发现错误的风险?

最佳答案

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

还有第三方库可以用来获取这些信息,比如whereami as mentioned in prideout's answer ,或者如果您使用的是 Qt,QCoreApplication::applicationFilePath()如评论中所述。

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

一些 shell,包括 bash 和 ksh,set the environment variable "_"到可执行文件执行之前的完整路径。在这种情况下,您可以使用 getenv("_") 来获取它。然而,这是不可靠的,因为并非所有的 shell 都这样做,并且它可以设置为任何内容,或者是在执行程序之前没有更改它的父进程遗留下来的。

关于c++ - 在没有/proc/self/exe 的情况下查找当前可执行文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com