C — 为什么"写入"不能写入文件?

  • 本文关键字:文件 不能 写入 c
  • 更新时间 :
  • 英文 :


我想处理write:为什么它不写一个文件(errno 9,EBADF: Bad file descriptor),虽然如果你用1代替fdOut,那么一切都完美地显示在屏幕上?

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
int main (void)
{
int     fdOut;
char    *outFileName = "out";
char    sample[7] ="sample";

fdOut = open (outFileName, O_CREAT, 0777);
if (fdOut == -1)
printf ("ups, errno %dn", errno);
else
{
write (fdOut, sample, 7);
write (fdOut, "n", 1);
}
close (fdOut);
printf ("%s", sample);
return (0);
}

查看open的文档(例如这里),我们看到:

参数标志必须包含以下访问模式中的一个:O_RDONLYO_WRONLYO_RDWR。它们分别请求只读、只读或读/写打开文件。

在这种情况下,可以安全地假设您需要O_WRONLY:

fdOut = open (outFileName, O_CREAT | O_WRONLY, 0777);

您可能还需要查看O_TRUNC,以查找该文件存在的情况。

最新更新