簡體   English   中英

write():錯誤的文件描述符

[英]write(): Bad file descriptor

我正在嘗試學習POSIX中的基本IO函數,我編寫了以下代碼,但它不起作用,當我嘗試執行代碼時返回“錯誤的文件描述符”錯誤:

#include <stdio.h>
#include <stdlib.h>

#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main(void)
{

    int nfd;
    ssize_t ret;

    mode_t mode = S_IRWXU | S_IRWXG;

    nfd = openat(AT_FDCWD, "idx.txt", O_APPEND | O_SYNC | O_CREAT, mode);

    if (-1 == nfd)
    {
        perror("openat()");
        exit(EXIT_FAILURE);
    }

    ret = write(nfd, "HELLO", 5);

    if (-1 == ret)
    {
        perror("write()");
        exit(EXIT_FAILURE);
    }

    close(nfd);

    return 0;
}

我想以O_APPEND模式寫入文件。 但:

$ touch idx.txt # it does not work even if the file does not exist already
$ ./a.out
write(): Bad file descriptor

您沒有告訴系統您要寫入文件,向標志添加O_WRONLY或O_RDWR使其工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM