答え1
「プログラム」が何を意味するかによって異なります。
まず、抜粋した映像の内容は誤解を招くことがあります。会議は次のように始まりました。働く、シェルプロセスを含みます。「で説明したように、タスクとプロセスの違いは何ですか?そしてPOSIX ジョブ定義、ㅏ働く シェルのコンセプトです。したがって、実行中のシェルは、以下で作成されない限り、ジョブ自体ではありません。親シェルプロセス。抜粋では、親プロセスは次のとおりです。端末その中では、で説明したようにバッシュガイドは必ずしもシェルである必要はないテキストベースのインタフェースプログラムを実行するためのグラフィカルインタフェースプログラムだけです。
以下は、テーブルを説明するいくつかのコマンドです。TTY公開正しい:
$ cat
hello
hello
^Z
[1]+ Stopped cat
$ cat | sort
^Z
$ jobs
[1]- Stopped cat
[2]+ Stopped cat | sort
cat
最終出力には2つの作業(および)があることを確認できます。cat | sort
後者はls | sort
テーブルに対応します。
「bashで実行されるプログラムが新しいジョブで実行されるかどうか」については、POSIX定義:
働く
同じプロセスグループ内のシェルパイプと、ここから派生したすべてのプロセスを含むプロセスグループ。
したがって、「シェルパイプを含むプロセスのセット」を実行しているプログラム(プログラムが実行されるコマンドのセットであることがわかります)と見なす場合はそうです。
しかし、「プログラム」は「シェルパイプ」よりも一般的な概念であるため、bashで実行されるプログラムは通常、新しいジョブでは実行されません。たとえばcat
、sort
プログラムもプログラムですが、それぞれ別々のジョブで実行されるわけではありません。
返品、シェル組み込み関数「コマンドセット」なので「プログラム」です。ただし、これらはシェルプログラム自体に含まれているコンポーネントなので、実行のために必ずしも別のサブプロセスとして作成する必要はありません。別のサブプロセスで実行されないと、シェル操作の一部にすることはできません。
答え2
はい、そうです。後に ^Z と入力してシェルから生成することができ、bg
独自の PID で実行され続けます。