問題

例えば、

  1. 私は "git bash"を開始します。
  2. 私はcertianディレクトリにナビゲートします。
  3. 私はgit gui&を開始します。
  4. コンソールウィンドウを閉じるか、Ctrl + Cを押します。

Git-guiのウィンドウが消えます。 git gui&disownを使用しても。 Ctrl + Cを押したときにフォアグラウンドにない場合でも

Windowsコンソールからgit guiを正しくデタッチする方法は?

  ベストアンサー

他の人の利点については、 git bash msys bash の両方に関連するより一般的な答えを与えます。

解決策1:stdoutなしでデタッチ

アプリを切り離したいとします。

 "C:\Program Files\MyApp\MyApp.exe"
 

stdout(またはstderr)に取得したい情報は出力されません。
または Windows bashシェルで使用する:

 cmd //c start //D "C:\Program Files\MyApp"  MyApp.exe arg1 arg2 
 

myappは別のウィンドウで実行され、呼び出し元のbashシェルを閉じることは(Linuxデーモンのように)影響しません。

上記のように、ダイアログメッセージでない限り、アプリケーションメッセージを読み取ることはできません。したがって、このソリューションはGUIアプリケーションに適合します。とにかく、MyApp.exeが代わりにMyApp.cmdのようなWindowsバッチファイルであれば、それはcmd.exeホストを呼び出し、そこにログインします:要するに、.cmd/.b

Macのようなユーザー

cmd.exeウィンドウは即座にフラッシュアウトされます。上記の行でcmd CMDOW NirCmd などに置き換えます。

解決策2:stdoutでデタッチ

ログをstdoutとstderrに読み込みたい場合は、次のようにします。

 cmd //c start cmd //k  "C:\Program Files\MyApp\MyApp" arg1 arg2 
 

この選択肢は、MyAppがコンソールアプリケーションである場合に主にアドバイスされます。今度は "home"を持つデーモンを取得します。 MyAppは2番目のcmd.exeでホストされ、ここにその出力が表示されます。
または GUIアプリケーションの場合、myappウィンドウと呼び出し元のcmdウィンドウの2つのウィンドウで終了します。

どちらの場合も、MyAppを終了することは、cmdウィンドウを閉じることを意味しません。 cmdウィンドウを閉じると、MyAppコンソールが閉じられます。

フラッシュパンチがあなたに打撃を与えた場合、ここでは最初の cmd を置き換える必要があります。 2 番目はデーモンの視覚的な家です。

ソリューション3:ドキュメント中心のアプリケーションを切り離す

いくつかのドキュメントは、Linuxシバン構文に似たメカニズムを介して、いくつかの処理アプリケーションと密接に関連していますが、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"
 

  同じタグがついた質問を見る

windowsgitgit-bashmsysgit-gui