我只是尝试通过 PATH env 解析其位置来运行一个新进程。变种。因为我使用 Qt 这意味着我添加了
X:\文件夹\
到我的 PATH 变量和我正在调用的启动应用程序中
QProcess::startDetached("test.exe")
这确实有效。
然而,test.exe 将数据写入其工作目录。此数据最终位于启动应用程序的目录中,而不是 X:\folder\,这不是我想要的。
我通过在 CLI 中键入“test.exe”直接在 Windows 命令行中测试了该行为,它在那里是相同的(将数据写入当前目录)。
有没有一种方法(在 C++ 或命令行中)使用 PATH 启动进程,同时还使用 PATH 中找到的目录作为新进程的工作目录?
我可以自己搜索 PATH,分析结果并通过另一个 QProcess::startDetached() 重载启动程序,但我想知道是否有更简单的方法。
最佳答案
当您使用路径时,操作系统不会“移动到当前目录”。你必须自己做。 (在大多数情况下,您不会真的希望应用程序移动到不同的目录 - 如果编译器在您执行 gcc foo.c
时这样做了怎么办 - 那么您必须通过完整的所有内容的路径,因为您当然不想将源文件放在编译器所在的位置——在许多情况下,您甚至可能无法在 Unix/Linux 系统上写入该目录)。
您将必须预先设置正确的文件夹 [我建议使用应用程序安装目录可能不是最好的地方!],或者执行 chdir(...)
来更改当前工作目录到您希望数据所在的位置。大多数应用程序(使用像这样将文件存储在特定位置的原则)在某处的设置中存储“默认目录”,因此用户可以更改设置以适合他/她的设置。
关于c++ - 通过 PATH env 启动程序。变种。有正确的工作目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21181251/