一部のプログラムはすぐにシェルに戻りますが、他のプログラムは実行が完了するまで返されないのはなぜですか?

一部のプログラムはすぐにシェルに戻りますが、他のプログラムは実行が完了するまで返されないのはなぜですか?

私が読んで最新のオペレーティングシステムこの本では、コマンドが実行されると、シェルは子プロセスを作成し、子プロセスが実行を完了するのを待ってから、ユーザーが実行した他のコマンドを待つと言います。しかし、geditgeditが開いたとき原子エディタが実行中の場合、シェルはすぐに返され、エディタが実行されている間も次のコマンドを受け入れる準備ができます。端末を閉じる確かに原子を閉じます。これはエディタが子プロセスとして開かないという意味ですか?これを可能にする基本的なメカニズムは何ですか?

ps au | grep atom走る

<username>      8042  0.0  0.0  15944  2264 pts/1    S+   00:55   0:00 grep --color=auto atom

ベストアンサー1

この質問は、2種類のプログラムについて尋ねられます。

  1. シェルでユーザーと対話するプログラム
  2. 以下を行うプログラムいいえシェルでユーザーと対話します。

最初のケースでは、シェルでユーザーと対話するプログラムは、シェルに制御を返す前に完了するまで実行するように設計されています。特別なことはありません。

2番目の状況はより複雑です。通常、プログラムはクロス(メモリに自分自身をコピーして)削除するシェルとの接続を準備します。制御端子、そしておそらく実装する他のプログラム - 元のシェルとは独立して実行されます。 2番目のプログラムからのメッセージを見ることができますが、通常、ユーザーと対話することはありません。使用量に応じて

  • 悪魔(サーバー)プロセスまたは
  • プログラムは新しいウィンドウで実行できます。グラフィックエディタは後者を実行します。

追加資料:

おすすめ記事