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

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

img

img


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

  • 写回答

4条回答 默认 最新

  • 檀越@新空间 2024-07-16 18:11
    关注

    晚上好🌙🌙🌙
    本答案参考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日