您知道如何在C中获取当前程序的绝对位置吗?我不是在讨论当前目录,而是在放置可执行文件的目录。
答案 0 :(得分:4)
C标准没有提供这样做的方法;它必须使用特定于操作系统的API来完成。您可能还有一个直接在芯片上编程的小型嵌入式操作系统;那么程序的位置是什么?
在普通操作系统上,我认为这可能是一个安全漏洞。
答案 1 :(得分:2)
在Linux中使用readlink /proc/self/exe
在Windows中使用GetModuleFileName()
代表hModule = NULL
答案 2 :(得分:0)
据我所知,C标准没有定义这样做的方法。唯一的方法是使用依赖于操作系统的功能,这意味着你在Linux / Windows / Mac中执行,而不是“在C中”。
一种方法是将{strong>通常的可执行文件名放在argv[0]
中。但是我不确定将它假设为可执行文件的完整路径是否总是安全的。
例如,在BusyBox中,他们使用该技巧使单个可执行文件显示为使用符号链接的多个单独程序。可执行文件检查argv[0]
是什么,并相应地表现。
答案 3 :(得分:0)
你可以看看argv [0],但我不确定它是否能保证给你一条路径。