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

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

 Напишите программу, которая заменяет корневой каталог указанным каталогом, и исследуйте дерево каталогов, доступное для этой программы.

21. Почему процесс не может отменить предыдущий вызов функции chroot? Измените конкретную реализацию процесса таким образом, чтобы он мог менять текущее значение корня на предыдущее. Какие у этой возможности преимущества и неудобства?

22. Рассмотрим простой пример канала (Рисунок 5.19), когда процесс записывает в канал строку «hello» и затем считывает ее. Что произошло бы, если бы массив для записи данных в канал имел размер 1024 байта вместо 6 (а объем считываемых за одну операцию данных оставался равным 6)? Что произойдет, если порядок вызова функций read и write в программе изменить, поменяв функции местами?

main(argc,argv)

int argc;

char *argv[];

{

 if (argc != 2)  {

  printf("нужен 1 аргумент — имя каталога\n");

  exit();

 }

 if (chdir(argv[1]) == -1) printf("%s файл не является каталогом\n", argv[1]);

}

Рисунок 5.38. Пример программы с использованием функции chdir

23. Что произойдет при выполнении программы, иллюстрирующей использование поименованных каналов (Рисунок 5.19), если функция mknod обнаружит, что канал с таким именем уже существует? Как этот момент реализуется ядром? Что произошло бы, если бы вместо подразумеваемых в тексте программы одного считывающего и одного записывающего процессов связь между собой через канал попытались установить несколько считывающих и записывающих процессов? Как в этом случае гарантировалась бы связь одного считывающего процесса с одним записывающим процессом?

24.

|< Пред. 226 227 228 229 230 След. >|

Java книги

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