单元测试错误条件 - EINTR

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)的错误处理?

Ben*_*oit 2

我认为没有一种简单的方法可以随意实际测试这一点。

如果 fclose 操作被信号中断,则会生成 EINTR。这意味着 fclose 位于后台线程中,该线程在处理关闭请求时接收到信号。

祝你在重现那种情况时好运。