【发布时间】:2013-04-03 19:23:34
【问题描述】:
我正在使用 C++、flex 和 GNU bison 编写一个简单的语言解释器/翻译器。我需要知道可执行文件的路径。对于诸如“mylang mysource.ext”之类的简单情况,我可以使用argc 和argv 获取路径,但是如果通过shebang 调用文件我该怎么办(例如“#/usr/bin/env mylang”) ?
在其他情况下,argc 和 argv 组合不起作用。是否有可能覆盖这种情况?如果是这样,我想获得可执行文件的完整路径。解决方案必须是跨平台的。如果可能的话,我想避免使用外部库,尤其是 boost,这对我的目标来说非常大。谢谢!
【问题讨论】:
-
在 Windows 上,
GetModuleFileName(NULL, ...)。 (我怀疑你会找到一个跨平台的答案。) -
您在使用
argv[0]时遇到了哪些具体问题?你的目标是什么平台? -
同样的主题出现了yesterday。通常的解决方案包括 argv[0] (Linux) 或 GetModuleFileName() (Windows)。建议:为什么不要求用户定义一个指向您的根目录的 $ENVIRONMENT 变量?
-
关于 shebang 的部分(例如“#/usr/bin/env mylang”) 恕我直言,是对 linux 的提示。
标签: c++ path executable