

没加close(fd),正常输出到文件中,加了反而不行,不是close会刷新缓冲区吗,
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5
对于这个问题,你可以按照以下步骤来解决:
<unistd.h>和<stdio.h>头文件。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()函数之后调用才能保证文件缓冲区被正确地关闭。