简而言之,如何对系统调用上的错误条件(例如 EINTR)进行单元测试。
我正在研究的一个特定示例(这可能是一种单独的情况)是,当它返回带有 (errno==EINTR) 的 EOF 时是否有必要再次调用 fclose。该行为取决于 fclose 的实现:
// Given an open FILE *fp
while (fclose(fp)==EOF && errno==EINTR) {
errno = 0;
}
如果在 EINTR 发生时释放 fp,则此调用可能不安全。如何测试 when (errno==EINTR) 的错误处理?
在这种特殊情况下,再次调用 fclose() 并不安全,因为 C 标准表示,即使调用失败,流也会与文件解除关联(并变得不确定)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)