为什么我必须使用close()来关闭文件?

She*_*hen 7 c operating-system

我正在学习一些文件功能,因此有疑问.

我很好奇为什么有必要打电话close()来关闭文件?如果我close()在读/写文件后没有打电话,会发生什么事情?如果我打电话close(),我仍然可以使用文件描述符吗?

Joh*_*136 9

  • 如果文件背后有任何类型的缓冲,并且您没有调用close,那么您可能会丢失数据.

  • 如果操作系统具有有限的资源(例如打开文件的数量),那么通过不关闭文件就会浪费系统资源.

  • 文件关闭后使用描述符充其量是没有意义的,最糟糕的是大量错误(有点像在释放文件后使用内存)

  • 这里有几个答案声称缓冲区是在close()时刷新的,但事实上并非如此...... POSIX close()不会刷新,也不会影响是否或何时将数据写入设备. (5认同)