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

Этот пример похож на предыдущий, но в этом случае копирование
осуществляется из файла в файл. Этот пример похож на команду cp(1).
13-17     Проверка правильности числа аргументов
18-21     Первый аргумент программы - имя копируемого файла, который
открывается на чтение
22-26     Второй аргумент - имя файла, открываемого на запись. Если
файл не существует, он будет создан. Иначе он будет усечен до нулевого
размера. PMODE - символьная константа, используемая для установки
битов прав доступа к файлу.
28-29     Этими операторами производится цикл копирования. Возможно,
хорошей идеей является сравнение количества действительно записанных
байт (значение, возвращаемое функцией write(2)) с требуемым
количеством (в данном случае n). Например, эти значения не совпадают,
если достигнут предел размера файла.
Файл: copy.c
                      КОПИРОВАНИЕ ФАЙЛА - ПРИМЕР

 1 #include <stdio.h>
 2 #include <sys/types.h>
 3 #include <stdlib.h>
 4 #include <unistd.h>
 5 #include <fcntl.h>
 6 #define   PMODE     0644
 7
 8 main(int argc, char *argv[])
 9 {
10     int fdin, fdout, n;
11     char buf[BUFSIZ];
12
13     if (argc != 3) {
14     fprintf(stderr, "Usage: %s filein fileout\n",
15         argv[0]);
16     exit(1);
17     }
18     if ((fdin = open(argv[1], O_RDONLY)) == -1) {
19     perror(argv[1]);
20     exit(2);
21     }
22     if ((fdout = open(argv[2], O_WRONLY | O_CREAT |
23     O_TRUNC, PMODE)) == -1 ) {
24     perror(argv[2]);
25     exit(3);
26     }
27
28     while ((n = read(fdin, buf, BUFSIZ)) > 0)
29     write(fdout, buf, n);
30
31     exit(0);
32 }