如果我对文件进行fopen
编码,则调用fclose
或close
和使用哪种文件有什么区别?
如果 fork 的 child 也可以访问该文件,那么在完成文件操作后该怎么办?
最佳答案
fclose()
是与文件流相关的功能。当您使用fopen()
打开文件并将流分配给FILE *ptr
时。然后,您将使用fclose()
关闭打开的文件。close()
是与文件描述符相关的功能。当您使用open()
打开文件并将描述符分配给int fd
时。然后,您将使用close()
关闭打开的文件。
像fopen()
,fclose()
等功能是C标准函数,而open()
,close()
等其他类别是POSIX特定的。这意味着用open()
,close()
等编写的代码不是标准的C代码,因此不可移植。而用fopen()
,fclose
等编写的代码是标准代码,可以移植到任何类型的系统上。
这取决于您如何打开文件。如果使用fopen()
打开文件,则应使用fclose()
,如果使用open()
打开文件,则应使用close()
。
这还取决于您在哪里调用fork()
:打开文件之前还是打开文件之后。
另请:Are file descriptors shared when fork()ing?
请参阅:man fclose
和man close
关于c - fclose和close之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19564797/