[解決済み] Unixのセッションとプロセスグループの使い方と意味?
質問
UnixプロセスはセッションIDを持ち、プロセスグループに属しています。これはsetsid()/getpgrp()などの関数で変更/照会することができます。
しかし、プロセス グループとセッションの概念は、常に私には理解できませんでした。誰か、個別のセッションとプロセス グループを持つことがどのような意味を持つのか、新しいセッションを作成したり、同じセッションやプロセス グループに複数のプロセスを配置したりするのはなぜか、いつなのか、説明していただけないでしょうか。
どのように解決するのですか?
A プロセスグループ は、関連するプロセスの集まりで、一度にすべてシグナルを送ることができます。
A セッション はプロセスグループの集まりで、単一の端末デバイスに接続されているか (これは 制御端末 に接続されているか、どの端末にも接続されていないかのどちらかです。
セッションはジョブ制御に使用されます。セッション内のプロセスグループの1つはフォアグラウンドプロセスグループであり、端末制御文字で信号を送ることができます。 制御端末とのセッションは、その端末での "ログイン" に対応すると考えることができます。 (デーモンは通常、制御端末のない新しいセッションを作成することにより、制御端末との関連付けを解除します)。
を実行する場合、例えば
some_app
をシェルから実行すると、シェルはそのために新しいプロセスグループを作成し、 それをセッションのフォアグラウンドプロセスグループとします。 (
some_app
はいくつかの子プロセスを作成するかもしれないが、 デフォルトではそれらは同じプロセスグループに属することになる)。 その後
^Z
,
some_app
のプロセスグループが停止するように合図され、 シェルのプロセスグループは再びフォアグラウンドのプロセスグループに切り替わる。 すると、例えば
bg %1
が起動されると
some_app
のプロセスグループを再び起動し、バックグラウンドで実行し続けます。
の POSIX.1-2008 標準 はかなり読みやすいものです (少なくとも、私はそう思っています!) 。 の定義を見てください。 の関連するセクションを見てください。 "一般端末インターフェース" の章を参照してください。
関連
-
[解決済み】Macでポート3000をロックしているプロセスを検索(およびkill)する
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] UnixのタイムスタンプをDateTimeに、またはその逆に変換するにはどうすればよいですか?
-
[解決済み] 何が私のプロセスを殺したのか、なぜなのか?
-
[解決済み] プロセスグループの全メンバーにシグナルを送るには、どのような方法が良いでしょうか?
-
[解決済み] 標準入力にタイムスタンプを前置するUnixユーティリティはありますか?
-
[解決済み] Unix / Linuxでプロセスのパスを取得する方法
-
[解決済み] シェルスクリプトにヘルプメソッドを追加するにはどうすればよいですか?
-
[解決済み] UNIXでファイルの追加はアトミックですか?
-
[解決済み] SSHトンネルのセットアップを許可するが、それ以外のことは許可しない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] シンボリックリンクとハードリンクの違いは何ですか?
-
[解決済み] grep --exclude/--include構文を使って特定のファイルをgrepしないようにする
-
[解決済み] ファイルディスクリプタとは何か、わかりやすく解説します。
-
[解決済み] Unixでtarコマンドの出力をオフにするにはどうしたらいいですか?[クローズド]です。
-
[解決済み] コマンドライン:検索結果をrmにパイプする
-
[解決済み] なぜいつも ./configure; make; make install; の3つのステップを別々に行うのですか?
-
[解決済み] どうしてgrepはそんなに速く動くのですか?
-
[解決済み] UNIX シェルスクリプトで 10 進数から 16 進数に変換する
-
[解決済み] 多くのファイルを含む2つのフォルダの内容を比較する
-
[解決済み] シェルスクリプト内の文字列を変数で置換する