본문 바로가기
42seoul/circle-2

[ minitalk ] getpid() | pause() | sleep() | usleep() | exit()

by saniii 2022. 2. 24.

 

 

  • getpid

실행 중인 프로세스 ID를 구하는 함수

#include <unistd.h>

pid_t getpid(void);

이 함수는 언제나 successful

 

(https://man7.org/linux/man-pages/man2/getpid.2.html glibc 버전 2.25부터 ID 캐시가 제거됨: getpid ()에 대한 호출은 항상
       캐시된 값을 반환하는 대신 실제 시스템 호출 )

(** getppid() : 부모 프로세스 ID를 구하는 함수)

 

 

 

  • pause

시그널을 기다리는 함수

#include <unistd.h>

int pause(void);

시그널을 잡으면 -1을 반환하고, 실패하면 EINTR

 

 

 

  • sleep

초단위로 지정한 만큼 혹은 지정한 시간 안에 시그널이 올 때까지 프로세스를 멈추는 함수

#include <unistd.h>

unsigned int sleep(unsigned int seconds);

남은 시간을 반환한다. 

  > 대기하며 지정한 시간을 다 쓰고 종료하면 0을 반환

  > 대기 중에 시그널이 발생하여 종료하면 남은 시간(초)를 반환한다. 

- unsigned int seconds : 지정한 대기 시간 

                                        

 

 

 

  • usleep

마이크로 초단위로 지정한 만큼 혹은 

#include <unistd.h>

int usleep(useconds_t usec);

정상적으로 종료하면 0을 반환, 오류가 발행하여 종료하면 -1을 반환한다.

-1이 반환되었을 때 전역 변수 errno의 값을 확인하면 오류를 알 수 있다. 

         > EINTR : 시그널이 발생하여 중단

         > EINVAL : usec값이 1,000,000이상이다.

         [참고 : https://www.it-note.kr/178 ]

 

- (unsigned int) useconds_t usec : 지정한 대기 시간 (0 ~ 999,999)

(1초 = 1,000,000마이크로 초)

 

 

  • exit

실행 중인 현재 프로세스를 종료한다. 

(exit(3) : exit(2) 시스템콜 함수를 wrapping한 일반 함수)

#include <stdlib.h>

noreturn void exit(int status);

반환값이 없다. 

- int status : 부모 프로세스로 넘겨줄 값

 

[ 참고 : https://www.it-note.kr/48 ]

'42seoul > circle-2' 카테고리의 다른 글

[minitalk] 발전방향  (0) 2022.02.26
[ minitalk ] 구현과정  (0) 2022.02.25
[ minitalk ] 시그널 함수 <signal.h>  (0) 2022.02.23
[minitalk] 1. UNIX signal  (0) 2022.02.22
[ minitalk ] 0. 과제이해하기  (0) 2022.02.16

댓글