Error Handling Wrapper
system-level operations는 대부분 에러가 난다. 그래서 에러 핸들링을 명시적으로 할 필요가 있다.
에러 핸들링 코드를 줄줄 써놓으면 전체 코드가 복잡해지니, 에러를 핸들링하는 wrapper함수를 만들어보자.
Linux는 에러가 나면 -1을 return하고, 전역변수 errno에 그 원인을 적어준다.
<error reporting wrapper func>
void reporting_error(char *error_msg){
fprintf(stderr, "%s : %s\n", error_msg, strerror(errno)); //에러 메시지 : 에러 넘버
exit(1); //비정상 종료
}
<usage>
if( (pid = fork()) < 0) {
reporting_error("fork error");
}
PID
: 각 process가 가지고 있는 고유 integer ID
Process states
간단히 3개의 states로 나눠보자.
▷ Running (Active) : 실행 중 or 스케줄링 기다리는 중
▷ Stopped (Blocked) : 멈춰서 signal 오기 전까지는 스케줄링도 안 됨
▷ Terminated (not Reaped, Zombie) : 종료되었지만 아직 reap 안 됨
'시스템' 카테고리의 다른 글
[OS] Page size <-> offset, page 개수 계산하기 (0) | 2023.09.20 |
---|---|
[시스템 프로그래밍] exit / fork / wait / execve (1) | 2023.03.22 |
[시스템 프로그래밍] Process와 Context Switching (0) | 2023.03.14 |
[시스템 프로그래밍] Exceptional control flow의 종류 (0) | 2023.03.09 |
[OS_Memory] VPN&offset 계산 기초 (0) | 2022.11.07 |