본문 바로가기
programming/Unix

[Unix Programming] 6. 프로세스 정보

by je0nsye0n 2024. 12. 11.

프로세스

  • process := 프로그램 코드, 변수 값, 스택 등에 저장된 값, PCB 내용 등을 포함;
  • process의 계층 구조: parent process → child processes;
    • 유닉스 시스템의 모든 프로세스는 init의 descendent process;

Process identifier

process identifier : 음이 아닌 정수

→ 0 : swapper

→ 1 : init

pid_t getpid(void);

pid_t getppid(void);

Process Group

  • 프로세스들을 묶어서 하나의 그룹으로 만든다
  • 같은 그룹에 속한 프로세스들에게 동시에 시그널을 보낼 수 있다.
  • 초기에 fork나 exec에 의해 그룹 아이디 계승
  • group leader : 자신의 pid가 group id이면, group의 leader이다.

pid_t getpgrp(void);

pid_t getpgid(pid_t pid); // 인자가 0이면 호출 프로세스 자신의 그룹 아이디 검색

int setpgid(pid_t pid, pid_t pgid); // pid인 프로세스의 그룹 아이디를 pgid로 설정

Session

  • session : 한 세션은 한 단말기를 사용하는 foreground process group과 background process group의 집합체
  • 각 프로세스 그룹은 하나의 session에 속한다
  • getsid 시스템 호출 : session id를 획득

pid_t getsid(pid_t pid);

  • setsid 시스템 호출 :

pid_t setsid(void);

→ 제어 단말기를 갖지 않는 새로운 session과 group 생성;

→ 호출 프로세스의 id의 session과 group의 id가 됨

→ 만약, 호출 프로세스가 현재 그룹의 리더이면 -1 return;