mag*_*nus 4 c file interrupt file-handling
在 Linux 上,C 标准库调用fread
并fwrite
执行系统调用等效项,read
并且write
.
系统调用的手册页提到了中断,说errno
set to可能会发生短写EINTR
。但是,库函数的手册页没有提及中断。那么,在这些库函数中会发生中断吗?
中断可能发生在fread()
andfwrite()
函数期间(以及在read()
andwrite()
系统调用期间- 没有办法阻止它。但是,如果发生中断会发生什么情况并不清楚 - 无论信号是否传递。这取决于您的应用程序如何(线程?)被设置为处理中断。
fread()
或fwrite()
。siglongjmp()
(或longjmp()
),则系统调用将不会返回。sigaction()
在设置处理程序时指定的内容。
SA_RESTART
意味着底层证券read
或write
将被重试SA_RESTART
将意味着read
orwrite
将终止 - 可能是短暂的读取或写入,或者可能是错误并errno
设置为 EINTR。fread()
和fwrite()
如果没有数据被读取或中断发生前将书面报告过失败。