2014-09-07 1 views
-6

다음 중 EINTR 또는 EAGAIN/EWOULDBLOCK을 반환 할 수있는 시스템 호출은 무엇입니까?EINTR 또는 EAGAIN 오류 코드를 반환 할 수있는 시스템 호출은 무엇입니까?

getsockname() 
chdir() 
bind() 
fcntl() 
listen() 
setsid() 
setsockopt() 
socket() 
stat() 
unlink() 
access() 
accept() 
open() 
usleep() 
dup2() 
fork() 
waitpid() 
wait() 
read() 
write() 

이러한 시스템 호출 중 일부는 오류시 (매뉴얼 페이지의 API에 따라) EINTR 또는 EAGAIN을 반환합니다.

또한 API에서 EINTR/EAGAIN을 참조하지 않지만이를 반환하는 시스템 호출이 있습니다.

도와주세요.

+3

나를 미친 소리로 불러야하지만, 숙제 문제와 같은 것 같습니다. –

+1

많은 시스템 호출이 이러한 오류 코드를 반환 할 수 있습니다. 확인해야 할 곳은 [POSIX 2008/2013 사양] (http://pubs.opengroup.org/onlinepubs/9699919799/toc.htm)입니다. 각 함수를 단계별로 실행하여 EINTR 또는 EAGAIN이 유효한 오류 코드인지 여부를 확인할 수 있습니다. 또는 시스템의 맨 페이지를 살펴볼 수도 있습니다. 단일 페이지에서 시스템 호출 및 오류 코드를 나열하는 온라인 리소스에 대해서는 잘 모릅니다. 큰 페이지가 될 것입니다. –

+1

필자는 man 페이지 나 Open Group 스펙이 그러한 정보에 사용될 수 있다는 것을 알고 있지만 많은 사람들이 매뉴얼 페이지 나 스펙에서 이들을 참조하지 않는 일부 시스템 호출에 대해 EINTR/EAGAIN 오류 코드를 처리한다는 것을 알고 있습니다. 일부 시스템 호출은 EINTR/EAGAIN을 리턴하는 다른 시스템 호출을 사용하기 때문에 발생할 수 있습니다. 매뉴얼 페이지 나 스펙이 그것을 언급 할 때만 EINTR/EAGAIN을 처리해야합니까? –

답변

0

답변을 찾았습니다. 이 질문은 삭제되어서는 안됩니다. 일반적으로 "slow"인 시스템 호출 만 EINTR을 반환합니다. 느린 일은 터미널 I/O와 기다리는 것 (선택, 대기, 잠, 일시 정지 등)입니다.

관련 문제