まず、この質問は関連していますが、次のような非常に良い質問とはかなり異なります。
一つ理解したいことがあります。 「&」をする時にフォークをするということです。そうですか?
"nohup ... &"タスクは動作しますか、それともシンプルで十分ですか?
「&」を使用していますが、まだ「nohup」を使用したい状況を誰かが表示できますか?
ベストアンサー1
まず、シェルは実行するかどうかにかかわらず、コマンドを実行するたびに新しいプロセスを分岐します&
。&
バックグラウンドで実行中という意味です。
これはあまり正確ではありませんのでご注意ください。シェル機能などの一部のコマンドはcd
通常、新しいプロセスを生成しません。これは通常、外部コマンドかシェル機能かを示しますtype cmd
。シェル関数自体であることをお知らせします。cmd
type type
type
nohup
何か違うと思います。新しいプロセスに無視するように指示しますSIGHUP
。親シェルが閉じたときにカーネルが送信する信号です。
ご質問にお答えするには:
- 走る
emacs &
(デフォルトでは別々のXウィンドウで実行する必要があります)。 - 親シェルでを実行します
exit
。
emacs
ウィンドウがバックグラウンドで実行されているが終了したことがわかります。これはデフォルトの動作なので、nohup
これを修正するために使用してください。
バックグラウンドでタスクを実行すること(&
または使用bg
、他のシェルには異なる構文があるでしょう)は、現代のシステムのマルチタスク機能に由来するシェルの機能です。最新のシェル(bash
、、、、...)はプログラムリスト(またはzsh
ksh
働く)。一度に一人しかいません。展望、これはシェルフォーカスを取得することを意味します。私は誰かがフォアグラウンドで実行されているプロセスとバックグラウンドで実行されているプロセス(主にstdin
/アクセスstdout
)の違いについてより多くの情報を提供できることを願っています。
いずれにせよ、これはサブプロセスのペアがどのように反応するかには影響しませんSIGHUP
。nohup
する。