[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Копирование ввода в вывод - Пример

Программа копирует данные из стандартного ввода, файловый дескриптор
0, в стандартный вывод, файловый дескриптор 1. Файловые дескрипторы 0,
1 и 2 (стандартный вывод диагностики) открываются при запуске
программы. Обычно они связаны с терминальным устройством. Это можно
изменить, используя перенаправление ввода/вывода в командной строке.
Эта программа работает следующим образом:
2    файл <stdio.h> содержит определение BUFSIZ.
7    buf объявлен достаточно большим для вызова read(2)
10-11     требуется прочесть BUFSIZ байт. Истинное число считанных
байт присваивается n и в обычной ситуации равно BUFSIZ. n может быть
меньше BUFSIZ, если читается оставшаяся часть файла или если ввод
осуществляется с терминала. Если данных больше нет, возвращается 0,
что указывает конец файла. В каждой итерации цикла читается n байт.
Для запуска программы наберите:
$ stdcopy <file1 >file2
Файл: stdcopy.c
                  КОПИРОВАНИЕ ВВОДА В ВЫВОД - ПРИМЕР

 1 #include <unistd.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4
 5 main()
 6 {
 7     char buf[BUFSIZ];
 8     int n;
 9
10     while ((n = read(0, buf, BUFSIZ)) > 0)
11         write(1, buf, n);
12     exit(0);
13 }