[<<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 }