GETPGRP(2)

名称
getpgrp - プロセスグループの取得

ライブラリ
libc

書式
<unistd.h> pid_t getpgrp(void) pid_t getpgid(pid_t pid)

解説
現在のプロセスのプロセスグループは getpgrp() によって返されます。 pid によって識別されるプロセスのプロセスグループは getpgid() によって返されます。 pid が 0 の場合、 getpgid() は現在のプロセスのプロセスグループを返します。

プロセスグループはシグナルの配信用に使用され、 また端末によって入力の要求を調整するのにも使用されます。 端末と同じプロセスグループを持つ (1 つ以上の) プロセスは フォアグラウンドであり読み取りできます。 一方で、その他のプロセスが読み取ろうした場合は、 シグナルによってブロックさせられます。

このように、このシステムコールは csh(1) のようにジョブ制御のためにプロセスグループの作成を 行うプログラムによって使用されます。 tcgetpgrp() 呼び出しと tcsetpgrp() 呼び出しは制御端末のプロセスグループを取得 / 設定するのに使用されます。

戻り値
getpgrp() システムコールは、常に成功します。 成功裏に完了すると、 getpgid() システムコールは指定したプロセスのプロセスグループを返します。 失敗すると、値 -1 を errno に設定してエラーを示します。

エラー
getpgid() システムコールは次の場合以外は成功します:

[ESRCH]
    pid で指定したプロセスに対応するプロセスが見つかりません。

関連項目
getsid(2), setpgid(2), termios(4)

歴史
getpgrp() システムコールは 4.0BSD で登場しました。 getpgid() システムコールは AT&T UNIX での使用法に由来しています。

規格
getpgrp() システムコールは p1003.1-90 に適合しています。

互換性
このバージョンの getpgrp() システムコールは、 pid_t pid 引数を取らないという点で過去の Berkeley バージョンとは異なっています。 互換性は p1003.1-90 への対応により失われてしまいました。

p1003.1-90 基本概念から:

4.3BSD は、指定のプロセスについてプロセスグループ ID を返す getpgrp() 関数を備えています。 この関数はジョブ制御をサポートするのに使用されますが、 既知のジョブ制御をする全てのシェルは、必ずこの関数に 呼び出しプロセスを指定しています。 そのためより簡単な AT&T UNIX getpgrp() で十分であり、 4.3BSD getpgrp() の追加された複雑さは POSIX.1 から省略されています。 古い機能は getpgid() システムコールで利用できます。