我见过这样的代码:
again:
if ((fp = fopen(filename, "r")) == NULL) {
if (errno == EINTR)
goto again; // just an interrupted system call
// handle other errors
}
这个想法是重试系统调用,如果它因为被中断而失败。但这是个好主意吗?什么时候是个好主意,什么时候不应该这样做?这是否特定于某些平台,或者 Windows或Unix 系统调用是否会因 EINTR 而失败?如果我正在尝试编写跨平台代码,我应该怎么做?