对于使用fprintf()
的格式化写入,我使用从FILE
(see this link)创建的文件描述符获取的mkstemp()
指针:
fd = mkstemp(tmpName);
FILE *fp = fdopen(fd, "w");
fprintf(fp, "#EXTM3U\n");
关闭文件的正确步骤是什么?
fclose(fp) // only?
fclose(fp); // both?
close(fd);
close(fd); // only?
答案 0 :(得分:2)
来自the docs:
fdopen()函数将流与现有文件相关联 描述符, fd 。
[...]
在 文件描述符不是重复的,并且在流时将被关闭 由 fdopen()创建的关闭。
请注意:
流的模式(其中一个值为“r”,“r +”, “w”,“w +”,“a”,“a +”)必须与文件的模式兼容 描述符。
答案 1 :(得分:0)
fdopen
的手册页指定了以下内容:
文件描述符未被复制,并且在fdopen()创建的流关闭时将关闭。
fclose
的手册页支持:
fclose()函数应该在与stream指向的流关联的文件描述符上执行close()的等价物
所以,fclose
就够了......