【发布时间】:2013-05-31 03:30:50
【问题描述】:
根据手册页fclose(3):
返回值
成功完成后返回 0。否则,返回
EOF并且 全局变量errno设置为指示错误。在任何一种情况下,任何进一步 对流的访问(包括对fclose()的另一次调用)导致 未定义的行为。错误
EBADFfp底层的文件描述符无效。
fclose()函数也可能失败并为任何错误设置errno为例程close(2)、write(2)或fflush(3)指定。
当然fclose(NULL) 应该失败,但我希望它正常返回errno,而不是直接因分段错误而死亡。这种行为有什么原因吗?
提前致谢。
更新:我将把我的代码放在这里(我正在尝试strerror(),特别是)。
FILE *not_exist = NULL;
not_exist = fopen("nonexist", "r");
if(not_exist == NULL){
printError(errno);
}
if(fclose(not_exist) == EOF){
printError(errno);
}
【问题讨论】:
标签: c linux segmentation-fault fclose