例如,
- 我开始“git bash”;
- 我导航到 certian 目录;
- 我开始
git gui&
; - 我关闭控制台窗口或按 Ctrl+C。
Git-gui 的窗口消失了。即使我使用了 git gui&disown
。即使当我按下 Ctrl+C 时它不在前台。
如何从 Windows 控制台正确分离 git gui
?
最佳答案
为了其他人的利益,我将给出与 git bash 相关的更一般的答案和 msys bash .
解决方案 1:不使用 stdout 分离
假设您要分离应用:
"C:\Program Files\MyApp\MyApp.exe"
它不会将您要检索的任何信息输出到标准输出(或标准错误)。
在 Windows bash shell 中使用:
cmd //c start //D "C:\\Program Files\\MyApp" MyApp.exe arg1 arg2
MyApp 将在单独的窗口中运行,关闭调用的 bash shell 不会影响它(大体上就像一个 Linux 守护进程)。
如前所述,除非是对话框消息,否则您无法读取应用程序消息,因此此解决方案适合 GUI 应用程序。无论如何,如果 MyApp.exe
是一个类似 MyApp.cmd
的 Windows 批处理文件,它将调用其 cmd.exe 主机并在那里登录:简而言之,您将读取输出.cmd/.bat 案例。
类似 Mac 的用户
cmd.exe
窗口将瞬间闪出。如果这对您(用户)来说不是很酷,请在上面的行中将 cmd
替换为 cmdow , NirCmd或类似的东西。
解决方案 2:使用标准输出分离
如果您想将日志读取到 stdout 和 stderr,请使用:
cmd //c start cmd //k "C:\\Program Files\\MyApp\\MyApp" arg1 arg2
如果 MyApp 是控制台应用程序,则通常建议使用此替代方法。现在你得到了一个带有“家”的守护进程。 MyApp 将由第二个 cmd.exe
托管运行,您将在此处看到它的输出。
对于 GUI 应用程序,您最终会看到两个窗口:MyApp 窗口和调用 cmd 窗口。
在这两种情况下,退出 MyApp 并不意味着关闭 cmd 窗口;关闭 cmd 窗口只会关闭 MyApp 控制台。
如果闪烁的拳头击中了你,这里你只需要替换第一个cmd
,第二个是你的守护进程的visbile home。
解决方案 3:分离以文档为中心的应用程序
一些文档与一些处理应用程序密切相关,通过类似于 Linux shebang 语法的机制,但基于 Windows 的注册表;因此您无需调用相关应用程序即可打开文档。
这种行为可以在 bash 中甚至以一种分离的方式进行模拟。
对于不需要输出到 stdout 和 stderr 的应用程序,打开 MyApp.doc 时:
cmd //c start //D "C:\\Program Files\\MyApp" MyApp.exe "Path\\to\\MyApp.doc"
可以简化为:
cmd //c start //D "Path\\to" MyApp.doc
对于需要 stdout 和 stderr 输出的应用,
cmd //c start cmd //k "C:\\Program Files\\MyApp\\MyApp" "Path\\to\\MyApp.doc"
可以简化为:
cmd //c start cmd //k "Path\\to\\MyApp.doc"
关于windows - 如何在 Windows 上从 "git gui"开始分离 "Git bash"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15763615/