본문 바로가기
UNIX 프로그래밍

[4주차, 5주차 개념] UNIX 시스템 정보/ 프로세스 정보

by 서영선 2023. 10. 13.

🚩 uid, guid 검색

 

✔ uid 검색

#include <sys/types.h>
#include <unistd.h>
uid_t getuid(void);
uid_t geteuid(void);

 

 

✔ guid 검색

#include <sys/types.h>
#include <unistd.h>
gid_t getgid(void);
gid_t getegid(void);

 

 

 

 

 

🚩 directory tree의 산책

 

✔ 사용법

#include <ftw.h>
int ftw(const char *path, int(*func)(), int depth);
  • path에서 시작해서 recursive하게 subdirectory와 file들에 func()수를 적용
  • depth : ftw에 의해 사용 가능한 file descriptor의 수

 

 

int func(const char * name, const struct stat* sptr, int type)(){
}
  • name : target object의 이름
  • sptr : object에 대한 자료가 저장된 stat에 대한 pointer
  • type :
FTW_F : object 가 file
FTW_D : object 가 directory
FTW_DNR : object가 읽을 수 없는 directory
FTW_NS : object는 ?
  • 함수가 0이 아닌 return 값을 가지거나, error 발생하면 중단

 

 

 

 

🚩 Process

 

✔ process란?   프로그램 코드, 변수 값, 스택 등에 저장된 값, PCB 내용 등을 포함

 

하나의 프로세스는 여러 프로그램을 실행 시킬 수 있고, 하나의 프로그램에도 여러 프로세스가 있을 수 있다.

 

  • process의 계층 구조 : parent process → child processes 
  • unix 시스템의 모든 process는 init의 descent process이다.

 

 

 

 

 

 

🚩 프로세스 목록 보기

 

  • shell  상에서 프로세스 목록 확인  ▶ $ps
  • 실행 중인 프로세스 종료 시키기   ▶ $kill -9 프로세스 번호

 

 

 

 

🚩 Process Identifier

  • process identifier : 음이 아닌 정수 (UNIX는 만들어진 순서대로 process 0, 1, 2라 한다.)

0 : swapper (모든 프로세스들의 ancestor)

1 : init

 

#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);

 

 

 

 

 

🚩 Process Group

 

▶  process group 

  •  프로세스들을 묶어서 하나의 group으로 만든다.
  • 같은 group에 속한 process들에게 동시에 signal을 보낼 수 있다.
  • 초기에 fork나 exec에 의해 group id 계승

 

▶  group leader

  • 자신의 pid가 group id이면, group의 leader이다.

 

 

 

✔ getpgrp, getpgid 모두 프로세스 그룹 ID 리턴

#include <sys/types.h>
#include <unistd.h>
pid_t getpgrp(void);   
pid_t getpgid(pid_t pid);

: getpgid의 인자가 0이면 호출 프로세스 자신의 group id 검색

 

 

 

✔ process group의 변경

#include <sys/types.h>
#include <unistd.h>
int setpgid(pid_t pid, pid_t pgid);

: pid인 프로세스의 group id를 pgid로 설정

 

 

 

 

 

 

 

🚩 Session

 

▶ session

한 세션은 한 단말기를 사용하는 foreground process group과 background process group의 집합체이다.

각 process group은 하나의 session에 속한다.

 

#include <sys/types.h>
#include <unistd.h>
pid_t getsid(pid_t pid);


#include <sys/types.h>
#include <unistd.h>
pid_t setsid(void);

 

  • 제어 단말기를 갖지 않는 새로운 session과 group 생성
  • 호출 프로세스의 id가 session과 group의 id가 된다.
  • 만약, 호출 process가 현재 group의 leader이면 -1을 return 한다.

 

 

 

 

 

 

Lect5 (3).pdf
0.32MB
Lect4 (2).pdf
0.28MB

 

댓글