C 哪些系统调用可以返回EINTR或EAGAIN错误代码?

C 哪些系统调用可以返回EINTR或EAGAIN错误代码?,c,posix,system-calls,interruption,manpage,C,Posix,System Calls,Interruption,Manpage,以下哪个系统调用可以返回EINTR或EAGAIN/EWOLDBLOCK getsockname() chdir() bind() fcntl() listen() setsid() setsockopt() socket() stat() unlink() access() accept() open() usleep() dup2() fork() waitpid() wait() read() write() 其中一些系统调用在出错时返回EINTR或EAGAIN(通过手册页的API) 还有

以下哪个系统调用可以返回EINTR或EAGAIN/EWOLDBLOCK

getsockname()
chdir()
bind()
fcntl()
listen()
setsid()
setsockopt()
socket()
stat()
unlink()
access()
accept()
open()
usleep()
dup2()
fork()
waitpid()
wait()
read()
write()
其中一些系统调用在出错时返回EINTR或EAGAIN(通过手册页的API)

还有一些系统调用存在,API不引用EINTR/EAGAIN,但返回这些调用


请帮忙。

我找到了答案。这个问题不应该被删除。通常,只有“慢”的系统调用才会返回EINTR。缓慢的事情是终端I/O和等待的事情(选择、等待、睡眠、暂停等)。

称我为疯子,但这听起来像是家庭作业问题……许多系统调用都会返回这些错误代码。一个需要检查的地方是。您可以依次单步执行每个函数,并检查EINTR或EAGAIN是否为有效的错误代码。或者您可以浏览系统上的手册页。我不知道有哪种在线资源会在一个页面上列出系统调用和错误代码——这将是一个很大的页面。我知道手册页或开放组规范可以用于此类信息,但我知道许多人处理一些系统调用的EINTR/EAGAIN错误代码,这些系统调用在手册页或规格这可能是因为某些系统调用可能会使用返回EINTR/EAGAIN的其他系统调用。我是否应该仅在手册页或规范引用时才处理EINTR/EAGAIN?