Provided by: manpages-ja-dev_0.5.0.0.20180315+dfsg-1_all ![bug](/img/bug.png)
![bug](/img/bug.png)
名前
setsid - セッション (session) を作成し、プロセスグループ ID を設定する
書式
#include <unistd.h> pid_t setsid(void);
説明
setsid() は、 呼び出したプロセスがプロセスグループリーダー (process group leader) でなければ、 新しいセッ ションを作成する。 呼び出したプロセスは、 新しいセッションのリーダーとなる (すなわち、そのセッション ID がプロセス ID と同じ値になる)。 また、呼び出したプロセスは、 そのセッションの新しいプロセスグループのプロ セスグループリーダーにもなる (すなわち、プロセスグループ ID がプロセス ID と同じ値になる)。 呼び出したプロセスは、 新しいプロセスグループと新しいセッションの唯一のプロセスとなる。 新しいセッション は制御端末を持たない。
返り値
成功すると、呼び出したプロセスの (新しい) セッション ID が返される。 エラーの場合は、 (pid_t) -1 が返さ れ、 errno にエラーを示す値が設定される。
エラー
EPERM いずれかのプロセスのプロセスグループ ID が、 呼び出したプロセスの PID と等しい。 これは、呼び出し たプロセスが既にプロセスリーダーの場合には setsid() は失敗することを意味する。
準拠
SVr4, POSIX.1-2001.
注意
fork(2) で作成された子プロセスは、親プロセスのセッション ID を継承する。 execve(2) の前後でセッション ID は保存される。 プロセスグループリーダーは、 プロセスグループ ID がその PID と同じ値のプロセスである。 プロセスグループ リーダーが setsid() を呼び出すことを許可しないと、 そのプロセスグループ内の他のプロセスを元のセッションに 残したまま、 プロセスグループリーダーが自分自身を新しいセッションに入れるということができなくなる。 この ようなシナリオは、 セッションとプロセスグループという厳密な 2 階層モデルを壊すことになる。 setsid() が成 功することを保証するには、 fork(2) と _exit(2) を行い、 その子プロセスに setsid() をさせればよい。
関連項目
setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告 に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。