c++ - 通过 PATH env 启动程序。变种。有正确的工作目录

标签 c++ windows command-line search-path

我只是尝试通过 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/

相关文章:

c# - 非虚拟接口(interface) (NVI) 惯用法在 C# 中是否与在 C++ 中一样有用?

c++ - 我应该使用#define、枚举还是常量?

string - 在子字符串之后批量修剪文本文件中的行 - REM 带有扩展的修剪

Python命令行用户界面

c++ - 如何在 C++/CX 中使用具有属性的类创建复制构造函数

c++ - 目标文件中的 ostream 运算符会发生什么?

javascript - 是否可以在 Node js 中执行一组包括系统重启的步骤?

node.js - Maven 未能执行目标 - 无法运行程序 npm

python - 当我仅使用脚本名称在 Windows 上运行 Python 脚本时无法重定向输出

windows - 为命令行程序生成 GUI 的工具