【发布时间】:2017-12-30 18:55:31
【问题描述】:
与在 CMD 中一样,要运行 C++ 程序,我使用命令 g++ filename.cpp,然后使用命令 a.exe 运行它,这会在 CMD 本身中打开输出。如何使用 PowerShell 做这样的事情?我无法通过a.exe 的简单命令打开文件。我做错了吗?
【问题讨论】:
-
老实说,我已经被淘汰了。我在 powershell 中运行 cmd,然后以 cmd 方式执行旧的 cmd。
-
试试这个
./a -
从 CMD 运行 a.exe 不会输出到“CMD 本身”。 cmd.exe、powershell.exe 和 a.exe 是控制台应用程序,它们将在启动时继承或创建控制台,该控制台由控制台子系统宿主进程 conhost.exe 的实例单独托管。如果您从 cmd.exe 运行 a.exe,它将继承 cmd.exe 的控制台作为其
StandardInput、StandardOutput和StandardError文件句柄——而“CMD 本身”的单线程只会阻塞,直到.exe 退出。 -
CMD 自动搜索工作目录的行为是不安全的。您可以通过设置环境变量
NoDefaultCurrentDirectoryInExePath来修复它。使用此设置,您还必须使用.\a在 CMD 中运行 a.exe。但是工作目录仍然可以显式添加到PATH为“.”,这样您就可以更好地控制它在整体搜索中的位置。 -
大家似乎都注意到了你没有发布你的错误信息。我相信他们的猜测是正确的(PowerShell 默认不在当前目录中运行可执行文件),但你不应该让别人猜测。 (请记住,没有人可以看到您的屏幕。)
标签: c++ powershell gcc cmd