시스템
[시스템 프로그래밍] error handling wrapper / pid / process states
코소빵
2023. 3. 15. 21:54
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 안 됨