linuxのsetsid関数
linuxのsetsid関数
1.定義
setsid - creates a session and sets the process group ID
はsetsid関数の定義についてですが、setsidが新しいセッションを作成することしか覚えていません.実際には、新しいプロセスグループというもう一つの機能があります.2.前提
lxg@lxg-X240:~/station/TLPI/chapter_34$ ./setsid PID:17641, PGID:17641, SID:17395 setsid error:Operation not permitted
上は私が書いた例で、私たちが言及したsetsidの前提条件を検証しています.3.なぜですか.では、なぜsetsidにはこの前提条件があるのでしょうか.まず、この前提がないと仮定すると、サンプル呼び出しが完了すると、セッションIDが17641に等しいセッションが新規作成されます.既存のプロセスグループ17461も新規作成しました(これは最初のエラーです).17461このプロセスグループには、呼び出しが完了すると、同じプロセスグループの2つのプロセス17461および17464がそれぞれ2つの異なるセッション17461および17359に属していることがわかります(これは2番目のエラーです).
1.定義
setsid - creates a session and sets the process group ID
はsetsid関数の定義についてですが、setsidが新しいセッションを作成することしか覚えていません.実際には、新しいプロセスグループというもう一つの機能があります.2.前提
/**********************************************************
> File Name: setsid.c
> Author: lxg
> Mail: [email protected]
> Created Time: 2015 06 07 22 35 46
*********************************************************/
#include
#include
#include
#include
int main(int argc, char *argv[])
{
pid_t pid;
fprintf(stdout, "PID:%d, PGID:%d, SID:%d
", getpid(), getpgrp(), getsid(0));
if(setsid() < 0)
{
fprintf(stderr, "setsid error:%s
", strerror(errno));
}
return 0;
}
lxg@lxg-X240:~/station/TLPI/chapter_34$ ./setsid PID:17641, PGID:17641, SID:17395 setsid error:Operation not permitted
上は私が書いた例で、私たちが言及したsetsidの前提条件を検証しています.3.なぜですか.では、なぜsetsidにはこの前提条件があるのでしょうか.まず、この前提がないと仮定すると、サンプル呼び出しが完了すると、セッションIDが17641に等しいセッションが新規作成されます.既存のプロセスグループ17461も新規作成しました(これは最初のエラーです).17461このプロセスグループには、呼び出しが完了すると、同じプロセスグループの2つのプロセス17461および17464がそれぞれ2つの異なるセッション17461および17359に属していることがわかります(これは2番目のエラーです).