프로 세 스 관계 - 세 션
2305 단어 회화유 닉 스 고급 환경 프로 그래 밍프로 세 스 관계
세 션 은 하나 이상 의 프로 세 스 그룹의 집합 입 니 다. 보통 셸 의 파이프 라인 에서 몇 개의 프로 세 스 를 한 그룹 으로 묶 습 니 다.세 션 의 첫 번 째 프로 세 스 는 세 션 을 새로 만 들 때 세 션 의 유일한 프로 세 스 입 니 다. 프로 세 스 ID 는 세 션 ID 와 같 습 니 다.
새 세 션 과 세 션 의 첫 번 째 프로 세 스 를 가 져 오 는 프로 세 스 그룹 ID 의 함수 입 니 다.
/* 会话 */
/*
* 函数功能:建立一个新会话;
* 返回值:若成功则返回进程组ID,若出错则返回-1;
* 函数原型:
*/
#include <unistd.h>
pid_t setsid(void);
/*
* 函数功能:获取会话首进程的进程组ID;
* 返回值:若成功则返回会话首进程的进程组ID,若出错则返回-1;
* 函数原型:
*/
pid_t getsid(pid_t pid);
/*
* 若pid = 0,则返回调用进程的会话首进程的进程组ID;
*/
setsid 함 수 를 호출 하 는 프로 세 스 가 프로 세 스 팀장 이 아니라면 이 함 수 는 새 세 션 을 만 들 것 입 니 다. 결 과 는 다음 세 가지 가 발생 합 니 다.
이 호출 프로 세 스 가 프로 세 스 그룹의 팀장 이 라면 이 함 수 는 오 류 를 되 돌려 줍 니 다.이러한 상황 이 발생 하지 않도록 하기 위해 서 는 보통 fork 를 호출 한 다음 에 아버지 프로 세 스 를 종료 시 키 면 하위 프로 세 스 는 계 속 됩 니 다.하위 프로 세 스 가 부모 프로 세 스 의 프로 세 스 그룹 ID 를 계 승 했 기 때문에 프로 세 스 ID 는 새로 분 배 된 것 으로 하위 프로 세 스 가 프로 세 스 그룹의 팀장 이 아 닐 것 을 보장 합 니 다.
테스트 프로그램:
#include "apue.h"
#include <sys/types.h>
int main(void)
{
pid_t pid;
if((pid = fork()) < 0)
err_sys("fork error");
else if(0 == pid)
{
setsid();
printf("child process pid is %d
",getpid());
printf("group id is %d
",getpgid(0));
printf("My father id is %d
",getppid());
printf("My session id is %d
",getsid(0));
}
else
{
printf("parent process pid is %d
",getpid());
printf("group id is %d
",getpgid(0));
printf("My father id is %d
",getppid());
printf("My session id is %d
",getsid(0));
}
}
출력 결과:parent process pid is 4854
group id is 4854
My father id is 2982
My session id is 2982
child process pid is 4855
group id is 4855
My father id is 1
My session id is 4855
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
표준 I/O-FILE 대상앞에서 소개 한 은 모두 파일 설명 자 를 대상 으로 작 동 하고 비 버퍼 방식 입 니 다.이 절 에 기 록 된 표준 I/O 작업 은 흐름 에서 이 루어 집 니 다.표준 I/O 로 파일 을 열거 나 만 들 때 하나의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.