ファイルマネージャは開いているプログラムをどのように分割しますか?

ファイルマネージャは開いているプログラムをどのように分割しますか?

今後数週間、私はターミナルエミュレータをデフォルトのファイルマネージャとして使用することに挑戦します。

問題があります。コマンドラインからGUIプログラムのファイル(Inkscape .svgなど)を開くにはどうすればよいですか?以下が利用可能であることを知っています。

inkscape ./Design.svg &

バックグラウンドに移動しますが、gnome-terminalそのプロセスの子として残ります(そして一緒に死ぬ)。また、デバッグ警告などがその端末に出力されます(面倒で面倒です)。

Nautilusのようなファイルマネージャが起動したエディタプロセスをリンクしなくなった方法で分離するにはどうすればよいですか?

私の端末でこれを行うにはどうすればよいですか?

答え1

これを達成するためのさまざまな方法が、各方法の長所と短所とともに記事で議論されています.」bashバックグラウンドでコマンドを正しく実行する「主にその記事と私が読んだ内容に基づいています。POSIX仕様nohup、必要なものを達成するための最も移植可能な方法は次のとおりです。

nohup inkscape ./Design.svg >/dev/null 2>&1 &

これは実際にプロセスを拒否しません。端末は依然として親プロセスです。しかし、

  1. 端末が死んでもinkscapeプロセスは死なない
  2. 端末に出力は表示されません。
  3. nohup.outファイルを削除したかのように、ホームディレクトリにファイルは作成されません/dev/null(。nohup文書この文書を説明するために。 )

bashPOSIX移植性を使用していてシンプルさに興味がある場合は、@thrigがコメントで指摘したように、最も簡単な方法は次のとおりです。

inkscape ./Design.svg & disown

disownこのユースケースには必要ありませんが、使用できるオプションはいくつかあります。help disown利用可能な他のオプションを表示するには、入力してください。

関連情報