Записать содержимое файла в стандартный формат с помощью системных вызовов?

Я понимаю, как открыть файл и записать содержимое этого файла в другой файл. Я хочу знать, как открыть файл с помощью системных вызовов низкого уровня open() write() read() close() открыть тот же файл и записать его в стандартный формат. Это возможно?

// OPEN OUTPUT FILE
if((output_file = open(argv[3], O_WRONLY|O_APPEND|O_CREAT, S_IRUSR|S_IWUSR)) < 0)
{
    progress("couldn't open output");
    perror(argv[3]);
    exit(1);
}

// OPEN INPUT FILE
if((input_file1 = open(argv[1], O_RDONLY)) < 0) // open file 1
{
    progress("couldn't open file1");
    perror(argv[1]);
    close(output_file);
    exit(1);
}

// WRITE        
while((n = read(input_file1, buffer, sizeof(buffer))) > 0)
{
    if((write(output_file, buffer, n)) < 0)
    {
        perror(argv[3]);
        close(input_file1);
        close(output_file);
        exit(1);
    }
}

1 ответ

Решение

Стандартный выход - это просто другой файл, и он уже открыт (если он не был закрыт). Его файловый дескриптор STDOUT_FILENOили в качестве альтернативы fileno(stdout), полученный путем включения <stdio.h> на Posix:

write(STDOUT_FILENO, buffer, n)
Другие вопросы по тегам