输入 "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.exeGUI 子系统应用程序,它会启动 异步 并且独立调用shell:即returns在成功创建[=56=后控制shell调用shell ],退出 shell 对该新进程没有影响。