Why glibc's fclose(NULL) cause segmentation fault instead of returning error?
问题 According to man page fclose(3) : RETURN VALUE Upon successful completion 0 is returned. Otherwise, EOF is returned and the global variable errno is set to indicate the error. In either case any further access (including another call to fclose() ) to the stream results in undefined behavior. ERRORS EBADF The file descriptor underlying fp is not valid. The fclose() function may also fail and set errno for any of the errors specified for the routines close(2) , write(2) or fflush(3) . Of course