1

你知道如何在 C 中获取当前程序的绝对位置吗?我说的不是当前目录,而是放置可执行文件的目录。

4

4 回答 4

4

C标准没有提供这样做的方法;它必须使用特定于操作系统的 API 来完成。您还不如在芯片上直接编程一个微型嵌入式操作系统;那么,程序的位置是什么?

在普通操作系统上,我认为这可能是一个安全漏洞。

于 2013-07-19T14:58:50.140 回答
2

在 Linux 中使用 readlink /proc/self/exe

在 Windows 中使用 GetModuleFileName()sayhModule = NULL

于 2013-07-19T15:00:51.620 回答
0

据我所知,C 标准没有定义一种方法来做到这一点。唯一的方法是使用依赖于操作系统的函数,这意味着你在 Linux/Windows/Mac 中执行它,而不是“在 C 中”。

一种方法是获取可执行文件的文件名,该文件名通常放在argv[0]. 但我不确定假设它是可执行文件的完整路径是否总是安全的。

例如,在 BusyBox 中,他们使用该技巧使用符号链接使单个可执行文件显示为多个单独的程序。可执行文件检查是什么argv[0],并做出相应的行为。

于 2013-07-19T14:57:14.270 回答
0

您可以查看 argv[0],但我不确定它是否能保证为您提供路径。

于 2013-07-19T14:57:34.777 回答