C — 为什么“write”无法写入文件?

问题描述 投票:0回答:1

我想处理

write
:为什么它不写入文件(errno 9,
EBADF: Bad file descriptor
),尽管如果你用
fdOut
替换
1
,那么一切都会完美地显示在屏幕上?

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

int main (void)
{
    int     fdOut;
    char    *outFileName = "out";
    char    sample[7] ="sample\0";
    
    fdOut = open (outFileName, O_CREAT, 0777);
    if (fdOut == -1)
        printf ("ups, errno %d\n", errno);
    else
    {
            write (fdOut, sample, 7);
            write (fdOut, "\n", 1);
    }
    close (fdOut);
    printf ("%s", sample);
    return (0);
}
c file file-io system-calls file-descriptor
1个回答
3
投票

查看

open
的文档(例如 here),我们看到:

参数flags必须包含以下访问模式之一:

O_RDONLY
O_WRONLY
O_RDWR
。这些请求分别以只读、只写或读/写方式打开文件。

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

O_WRONLY

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

您可能还想查看

O_TRUNC
以了解该文件确实存在的情况。

© www.soinside.com 2019 - 2024. All rights reserved.