私はこのようなコードを見てきました:
again:
if ((fp = fopen(filename, "r")) == NULL) {
if (errno == EINTR)
goto again; // just an interrupted system call
// handle other errors
}
システムコールが中断されたために失敗した場合、システムコールを再試行するという考え方です。しかし、それは良い考えですか?いつそれが良いアイデアで、いつこれを行うべきではないのですか? これは特定のプラットフォームに固有のものですか? それとも、WindowsまたはUnix でシステム コールが EINTR で失敗する可能性がありますか? クロス プラットフォーム コードを記述しようとしている場合はどうすればよいですか?