alarm과 sleep의 관계
369
작성한 질문수 158
"alarm이 울리면 프로세스가 sleep 상태라면 깬다"라는 것은 알겠는데
좀 더 덧붙여주실 얘기가 있으신가요? 두 함수를 같이 쓰진 않나요 보통?
아니면 alarm과 sleep 시간을 동시에 준다든지요??
답변 1
0
alarm() API로 설정한 시간이 만료되면 해당 프로세스로 SIGALRM이 전달됩니다. read() 등의 blocking operation을 수행하여 프로세스가 sleep 상태인 경우 signal 수신에 의해 깨어나게 된다는 의미 입니다. 이 때, read()와 같은 API가 에러에 의해 중단된 것이 아니므로 다시 read를 할 필요가 있다는 것이지요. 프로세스가 sleep 상태라는 것은 sleep() 함수를 호출했을 때를 의미하는 것은 아닙니다.
결론적으로 read() 등의 blocking operation을 수행할 때는 signal에 의해 깨어나는 경우가 있으므로 이를 대비해야 하는 것이고, sigaction()으로 SA_RESTART 플래그가 설정된 signal들은, 이 시그널에 의해 깨어나지만 자동으로 다시 하던 일(read()와 같은)을 수행할 수 있습니다. 참고로, sleep()의 경우엔 자동으로 재시작되지 않습니다. :)
API 별 동작은 man 7 signal을 참고하세요~ :)
inotify 객체에 등록된 watch descriptor 해제 관련 질문
0
37
2
select API 실습 코드 질문
0
41
2
wsl에서 fcntl사용
0
73
2
inotify_event 구조체 질문 [파일 이벤트 - 라이브 프로그래밍]에서...
0
180
2
./stat 파일이름
0
273
2
fopen r, r+모드 차이
0
460
2
강의를 모두 수강하고 스스로 구현하면 좋을 과제나 프로젝트 주제가 있을까요?
0
326
1
pthread 질문
0
419
2
I/O Multiplexing(select) 질문
0
325
1
inotify.c. ret 질문
0
302
1
inotify.c 질의합니다.
1
317
1
child process
0
715
1
read/blocking
0
565
1
flock
0
565
1
system call
0
598
1
pthread_create() 함수 이용했을 때, thread가 두번 호출되는 것 처럼 나타납니다. 왜 그런것인가요?
0
487
1
fork() 함수 사용시 결과 관련 질문
0
371
1
exec 관련 궁금한 사항
0
450
2
파일 디스크립터와 FILE 구조체에 대한 질문
0
552
1
buf 선언에 따른 read() fail 문제
0
251
2
파일 이벤트 - 라이브 프로그래밍 에서 캐스팅 질문
0
254
1
2번 multi thread 방법 질문
0
242
1
segmentation fault 발생 관련 문의
1
842
1
라이브 코딩 실습 코드
0
235
1





