请问fdopen需要fclose吗

kanwolf 2015-04-11 03:13:45

#include <stdio.h>
#include <fcntl.h>

int main(void)
{
int fp = -1;
FILE *fp2 = NULL;
char a[10] = "123\n";
fp = open("./9.txt",O_RDWR|O_CREAT);
if (-1 == fp)
{
perror("open fail:");
}
fp2 = fdopen(fp,"w");
if (NULL == fp2)
{
perror("error num:");
}
fwrite(a,sizeof(char),sizeof(a),fp2);
fclose(fp2);
close(fp);

return 0;
}

请问fclose和close都需要吗?为什么
...全文
622 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tnn1234 2015-04-12
  • 打赏
  • 举报
回复
太感谢了,哥们
brookmill 2015-04-11
  • 打赏
  • 举报
回复
关于发代码排版,要在上边那一排按钮里面找到“代码”然后选c/c++,然后在紧挨着的两个中括号之间写代码或者粘贴进去
brookmill 2015-04-11
  • 打赏
  • 举报
回复
fp就是文件指针file pointer,fd是文件描述符file descriptor,给变量起名字的时候最好不要混用,否则看代码的人会迷糊的。
        int fd = -1;
        FILE *fp2 = NULL;
        fd = open("./9.txt",O_RDWR|O_CREAT);
        fp2 = fdopen(fp,"w");
brookmill 2015-04-11
  • 打赏
  • 举报
回复
fclose即可,他会自动关闭对应的文件描述符,所以就不需要close了。 http://blog.csdn.net/xiaofeng_yan/article/details/6165893 $ man fdopen ...... The file descriptor is not dup'ed, and will be closed when the stream created by fdopen() is closed
kanwolf 2015-04-11
  • 打赏
  • 举报
回复
为什么我排版排的好好的,回复出来会这样

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧