Четене и отпечатване на файл

Инициализирайте променливите. Отворете файла readfile.c, при проблем отпечатайте грешка. Докато четенето от файла връща дължина различна от 0. Ако дължината е -1 и грешката е EINTR, опитайте да прочетете отново. Ако дължината е -1 и грешката <> EINTR, изведете грешка и преустановете. В противен случай отпечатайте буфера. Затворете файла, отпечатайте грешка при проблем.

readfile.c

#include <fcntl.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#define BUF_SIZE 1000000
int main(int argc, char *argv[])
{
    int fd = open("./readfile.c", O_RDONLY);
    if (fd == -1)
    {
        printf("ERROR opening the file!\n");
        return -1;
    }
    ssize_t len;
    char buf[BUF_SIZE];
    while ((len = read(fd, buf, BUF_SIZE - 1)) != 0)
    {
        if (len == -1)
        {
            if (errno == EINTR) continue;
            printf("ERROR reading the file!\n");
            break;
        }
        printf("%s", buf);
    }
    if (close(fd) == -1)
    {
        printf("ERROR closing the file!\n");
        return -2;
    }
    return 0;
}

Last updated