Provided by: manpages-ja-dev_0.5.0.0.20210215+dfsg-1_all bug

名前

       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/ に書かれている。