通过将其输入到 中来运行 Windows 中的程序cmd.exe。
./myapp.exe
Run Code Online (Sandbox Code Playgroud)
那么程序看起来就像在另一个线程中运行,与 cmd 不同的线程。如何让程序通过cmd运行完全像Linux风格。当cmd终端销毁时,正在运行的程序也随之终止。当程序运行时,cmd将按时捕获std输出。
那么程序看起来就像在另一个线程中运行,与 cmd 不同的线程。
嗯,该程序运行在一个单独的进程中,该进程有自己的线程。
在 Windows 上,有两种主要类型的程序:控制台程序和窗口程序。
控制台程序通常是打印文本的文本模式应用程序。这些已经按照您想要的方式运行:您运行程序,shell ( cmd.exe) 等待它完成,然后返回交互式提示符。如果程序长时间运行,强制终止cmd.exe将终止程序。
窗口程序通常是具有图形用户界面的应用程序(例如notepad.exe,explorer.exe,firefox.exe)。它们的行为不符合您想要的方式:当您运行它们时cmd.exe,cmd.exe它们不会等待它们并立即返回到交互式提示。所执行的程序独立于 运行cmd.exe,终止一个程序对另一个程序没有影响。
请注意,控制台程序可以有窗口,并且窗口程序可以有控制台输出。那么是什么让程序成为“控制台”或“窗口”程序呢?
部分.exe指定是否应与“控制台”子系统或“Windows”子系统一起运行。这是在构建程序时配置的(通常是隐式的)。这可以在程序构建后更改;editbin.exe(包含在 Visual Studio 中)可以修改.exe文件并更改程序应使用的子系统。
如果您只想查看 stdout 和 stderr 输出,则无需修改该.exe文件。通常窗口应用程序不会将该输出发送到任何地方,但您可以使用管道/重定向来更改它。例如,您可以运行:
SomeWindowedApplication.exe > output.txt
Run Code Online (Sandbox Code Playgroud)
或者,如果您有cat(或同等的)可用:
SomeWindowedApplication.exe | cat
Run Code Online (Sandbox Code Playgroud)
这样做还会导致cmd.exe等待程序终止,然后再返回到交互式提示符。请注意,这没有您想要的终止行为(即,cmd.exe在最后一个示例中终止将终止cat.exe,而不是ShowWindowedApplication.exe)。
另请参阅:
| 归档时间: |
|
| 查看次数: |
12218 次 |
| 最近记录: |