On Mon, 15 Feb 2016 19:22:59 +0300, Alexei Malinin wrote: > Please tell me can fprintf() set errno to EINTR?
Yes, it is possible but see below. > I have not found assignments such as "errno=EINTR" in libc sources > (src/lib/libc/stdio, amd64 OpenBSD-5.6 ) but I'm not sure. > > fprintf()'s man page does not say anything about errno but POSIX.1 says, > "If an output error was encountered, these functions shall return a > negative value and set /errno/ to indicate the error." If a signal handler is installed without the SA_RESTART flag set, the write(2) system call may fail with errno set to EINTR. The fprintf(3) function uses write(2) (deep) under the covers to write to a file or terminal. The signal(3) function always sets the SA_RESTART flag unless siginterrupt(3) has been used to make system calls interruptible. If the sigaction(2) system call is used, SA_RESTART must be explicitly set in sa_flags. - todd