Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 23 из 715

Файл может включать всебя как текст, который может быть выведен на печатающее устройство, например, исходный текст программы, так и символы, не выводимые на печать, даже саму программу. Таким образом, оба вызова:

copy copy.c newcopy.c

copy copy newcopy

являются допустимыми. Существующий файл также может быть каталогом. Например, по вызову:

copy . dircontents

копируется содержимое текущего каталога, обозначенного символом ".", в обычный файл «dircontents»; информация в новом файле совпадает, вплоть до каждого байта, с содержимым каталога, только этот файл обычного типа (для создания нового каталога предназначена операция mknod). Наконец, любой из файлов может быть файлом устройства. Например, программа, вызванная следующим образом:

copy /dev/tty terminalread

читает символы, вводимые с терминала (файл /dev/tty соответствует терминалу пользователя), и копирует их в файл terminalread, завершая работу только в том случае, если пользователь нажмет ‹Ctrl/d›. Похожая форма запуска программы:

copy /dev/tty /dev/tty

вызывает чтение символов с терминала и их копирование обратно на терминал.

#include

char buffer[2048];

int version = 1; /* будет объяснено в главе 2 */

main(argc, argv)

int argc;

char *argv[];

{

 int fdold, fdnew;

 if (argc!= 3)   {

  printf("need 2 arguments for copy program\n");

  exit(1);

 }

 fdold = open(argv[1], O_RDONLY); /* открыть исходный файл только для чтения */

 if (fdold == -1) {

  printf("cannot open file %s\n", argv[1]);

  exit(1);

 }

 fdnew = creat(argv[2], 0666); /* создать новый фа�

|< Пред. 21 22 23 24 25 След. >|

Java книги

Контакты: [email protected]