关闭 FILE, 同时关闭fd
int fclose(FILE *stream);
DESCRIPTION
The fclose() function causes the stream pointed to by stream to be flushed and the associated file to be closed. Any unwritten buffered data for the stream is written to the file; any unread buffered data is discarded. The stream is disassociated from the file. If the associated buffer was automatically allocated, it is deallocated. It marks for update the st_ctime and st_mtime fields of the underlying file, if the stream was writable, and if buffered data had not been written to the file yet. The fclose() function will perform a close() on the file descriptor that is associated with the stream pointed to by stream.
After the call to fclose(), any use of stream causes undefined behaviour.