/*
* @file session.c
* @brief 创建一个会话
* @version 1.1 无
* @author 北豼
* @date 2022年5月18日
*/
#include <stdio.h>
#include <stdlib.c>
#include <unistd.h>
int main(void)
{
pid_t pid;
//创建一个子进程
if ((pid = fork()) < 0)
{
perror("fork");
exit(1);
}
//在子进程中创建会话
else if (pid == 0)
{
printf("child process PID is %d\n", getpid());
printf("Groud ID of child is %d\n",getpgid(0));
printf("Session ID of child is %d\n", getsid(0));
sleep(10);
setsid(); //子进程非组长进程,故其成为新会话首进程,且成为组长进程。该进程组id即为会话进程
printf("Changed:\n");
printf("child process PID is %d\n", getpid());
printf("Groud ID of child is %d\n",getpgid(0));
printf("Session ID of child is %d\n", getsid(0));
sleep(20);
exit(0);
}
return 0;
}