如果我对文件进行fopen编码,则调用fcloseclose和使用哪种文件有什么区别?

如果 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 fcloseman close

关于c - fclose和close之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19564797/

10-12 06:08