標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
POSIX.1 |
両方 |
#define _POSIX_SOURCE
#include <unistd.h>
pid_t setsid(void);
呼び出しプロセスをセッション・リーダーとして使用して、新規セッションを作成します。呼び出し元が、新規プロセス・グループのプロセス・グループ・リーダー になります。呼び出しプロセスが既に、プロセス・グループ・リーダー ではないことが必要です。呼び出し元には制御端末がありません。
新規プロセス・グループのプロセス・グループ ID (PGID) は、呼び出し元のプロセス ID (PID) と等しくなっています。呼び出し元は、新規プロセス・グループおよび新規セッションの 唯一のプロセスとして開始されます。
正常に実行された場合、setsid() は、呼び出し元の新規 PGID の値を戻します。
⁄* CELEBS10
This example creates a new session.
*⁄
#define _POSIX_SOURCE
#include <unistd.h>
#include <sys⁄types.h>
#include <stdio.h>
main() {
pid_t pid;
int p[2];
char c='?';
if (pipe(p) != 0)
perror("pipe() error");
else
if ((pid = fork()) == 0) {
printf("child's process group id is %d¥n", (int) getpgrp());
write(p[1], &c, 1);
setsid();
printf("child's process group id is now %d¥n", (int) getpgrp());
exit(0);
}
else {
printf("parent's process group id is %d¥n", (int) getpgrp());
read(p[0], &c, 1);
sleep(5);
}
}
child's process group id is 262152
child's process group id is now 262150
parent's process group id is 262152