EINTR
是所谓的可中断系统调用可能返回的错误。如果在系统调用运行时发生信号,则不会忽略该信号,并且为它定义了SA_RESTART
未设置的信号处理程序并且该处理程序处理该信号,则系统调用将返回EINTR
错误代码。
作为旁注,我经常ncurses
在 Python 中使用这个错误。
POSIX 标准指定的这种行为背后是否有基本原理?可以理解可能无法恢复(取决于内核设计),但是,不在内核级别自动重新启动它的理由是什么?这是出于传统原因还是技术原因?如果这是出于技术原因,这些原因现在仍然有效吗?如果这是出于遗留原因,那么历史是什么?