输入 "exit" 关闭 foo.exe 和 powershell
Typing "exit" closes foo.exe along with powershell
我将程序的路径设置为我的系统路径,例如 "foo.exe",因此在 cmd/powershell 中键入 foo 会启动该程序。但是,当我键入 exit 退出 cmd/powershell 时,foo.exe 也会随之关闭。为什么会发生这种情况以及如何防止这种情况发生?
并非所有程序都会发生这种情况,只有某些程序会发生这种情况,这意味着那些某些程序可能应该以不同的方式添加到路径中,或者我猜应该以不同的方式启动。然而,在互联网上搜索了很长时间并没有给我任何帮助,所以不胜感激。
如果 foo.exe
是一个 控制台 应用程序(为 Windows 控制台子系统编译),它将 运行 在cmd.exe
/PowerShell 中同步:也就是说,在应用程序退出之前,控制权不会返回给调用shell。这意味着您甚至没有机会输入 exit
,直到 foo.exe
已经退出。
但是, 可以运行 控制台应用程序异步,即如果您使用工作到运行它,通过Start-Job
or Start-ThreadJob
;也就是说,foo.exe
将在 背景 .
中 运行
在那种情况下,使用 exit
退出调用 shell 将 终止 foo.exe
进程。
要防止这种情况,您可以改用 Start-Process
cmdlet;在 Windows 上,您可以使用它直接启动 foo.exe
,默认情况下将在 新控制台 window 中打开;在类 Unix 平台上,您必须通过 nohup
实用程序启动它(它将程序的输出发送到当前目录中名为 nohup.out
的文件)。
相比之下,如果 foo.exe
是 GUI 子系统应用程序,它会启动 异步 并且独立调用shell:即returns在成功创建[=56=后控制shell调用shell ],退出 shell 对该新进程没有影响。
我将程序的路径设置为我的系统路径,例如 "foo.exe",因此在 cmd/powershell 中键入 foo 会启动该程序。但是,当我键入 exit 退出 cmd/powershell 时,foo.exe 也会随之关闭。为什么会发生这种情况以及如何防止这种情况发生?
并非所有程序都会发生这种情况,只有某些程序会发生这种情况,这意味着那些某些程序可能应该以不同的方式添加到路径中,或者我猜应该以不同的方式启动。然而,在互联网上搜索了很长时间并没有给我任何帮助,所以不胜感激。
如果
foo.exe
是一个 控制台 应用程序(为 Windows 控制台子系统编译),它将 运行 在cmd.exe
/PowerShell 中同步:也就是说,在应用程序退出之前,控制权不会返回给调用shell。这意味着您甚至没有机会输入exit
,直到foo.exe
已经退出。但是, 可以运行 控制台应用程序异步,即如果您使用工作到运行它,通过
中 运行Start-Job
orStart-ThreadJob
;也就是说,foo.exe
将在 背景 .在那种情况下,使用
exit
退出调用 shell 将 终止foo.exe
进程。要防止这种情况,您可以改用
Start-Process
cmdlet;在 Windows 上,您可以使用它直接启动foo.exe
,默认情况下将在 新控制台 window 中打开;在类 Unix 平台上,您必须通过nohup
实用程序启动它(它将程序的输出发送到当前目录中名为nohup.out
的文件)。
相比之下,如果
foo.exe
是 GUI 子系统应用程序,它会启动 异步 并且独立调用shell:即returns在成功创建[=56=后控制shell调用shell ],退出 shell 对该新进程没有影响。