我想打开一些相对于二进制位置的文件(log4cxx 配置、其他日志等)。
不幸的是,两者getwd()
都给getcwd()
了我目录,我尝试从该目录以已知路径运行二进制文件,而不是给我二进制文件所在的路径(以及数据所在的位置)。
如何获取应用程序的使用路径chdir()
?除了尝试解析 /proc/$PID/之外的任何方法argv[0]
(这还不够便携)?
走 PATH 并找到与 argv[0] 同名的可执行文件?
但是,为用户提供一种配置数据位置的方法可能会更好。一个环境变量或配置文件或 CL 参数或其他东西。处理那些试图提供帮助但实际上很愚蠢的程序是非常令人沮丧的。
这正是autoconf的用途,如果您希望编写软件的程序员以外的任何人使用它,那么支持这些标准目录几乎是强制性的。正确设置后,要在主目录之外进行调试,您所要做的就是将不同的--prefix=
值传递给configure
.