竹叶风轻敲 2024-07-16 18:08 采纳率: 51.2%
浏览 3
已结题

为啥加了close(fd)反而没有输出到文件中去

img

img


没加close(fd),正常输出到文件中,加了反而不行,不是close会刷新缓冲区吗,

  • 写回答

4条回答 默认 最新

  • 关注

    晚上好🌙🌙🌙
    本答案参考ChatGPT-3.5

    对于这个问题,你可以按照以下步骤来解决:

    1. 确保你的程序中包含<unistd.h><stdio.h>头文件。
    2. 使用close()函数关闭一个已打开的文件。但是,这个函数不会立即刷新缓冲区。如果你想确保缓冲区被正确地关闭,你需要使用fflush()函数。

    修改后的代码如下:

    #include <unistd.h>
    #include <stdio.h>
    
    int matn() {
        close(1);
        return 0;
    }
    
    int main() {
        close(1);
        int fd = open("/mnt/hgfs/share/test", O_WRONLYIO_CREATIO_TRUNC, 0600);
        if (fd == -1) {
            perror("open()");
            return -1;
        }
    
        printf("say hello\n");
        return 0;
    }
    

    现在,当你运行这段代码时,你应该能看到在文件/mnt/hgfs/share/test中写入的文本,并且它会在完成后被打印出来。同时,程序也会在文件被关闭之前自动清空缓冲区。

    注意:fflush()函数是系统提供的,需要在close()函数之后调用才能保证文件缓冲区被正确地关闭。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 7月25日
  • 已采纳回答 7月17日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 单纯型python实现编译报错
  • ¥15 c++2013读写oracle
  • ¥15 c++ gmssl sm2验签demo
  • ¥15 关于模的完全剩余系(关键词-数学方法)
  • ¥15 有没有人懂这个博图程序怎么写,还要跟SFB连接,真的不会,求帮助
  • ¥15 PVE8.2.7无法成功使用a5000的vGPU,什么原因
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题