Mic*_*ith 7 c unit-testing errno eintr
简而言之,如何在系统调用上对EINTR等错误条件进行单元测试.
我正在研究的一个特殊例子,它本身就是一个案例,就是当它返回带有(errno == EINTR)的EOF时是否有必要再次调用fclose.行为取决于fclose的实现:
// Given an open FILE *fp
while (fclose(fp)==EOF && errno==EINTR) {
errno = 0;
}
Run Code Online (Sandbox Code Playgroud)
如果在发生EINTR时释放fp,则此调用可能不安全.如何测试何时(errno == EINTR)的错误处理?
我认为没有一种简单的方法可以随意实际测试这一点。
如果 fclose 操作被信号中断,则会生成 EINTR。这意味着 fclose 位于后台线程中,该线程在处理关闭请求时接收到信号。
祝你在重现那种情况时好运。