Операционная система Linux. Докторов А.Е. - 10 стр.

UptoLike

Составители: 

if (result > 0) { /* Работает родительский процесс */
close(fd[0]); /* Входной поток данных не понадобится */
size = write(fd[l], "Hello, world!", 14); /* Запись строки в поток */
/* Закрываем выходной поток данных и завершаем работу родителя */
close(fd[l]);
printf("Parent exit\n ");}
else { /* Работает порожденный процессе */
close(fd[l]); /* Выходной поток данных не понадобится */
size = read(fd[0], resstring, 14); /* Чтение строки из канала */
printf("%s\n",resstring); /* Печать прочитанной строки */
/* Закрыть входной поток и завершить работу */
close(fd[0]);
}
return 0;
}
Задание: модифицируйте этот пример для связи между собой двух
родственных процессов, исполняющих разные программы.
Канал pipe служит для организации однонаправленной или сим-
плексной связи. При попытке организовать через pipe двустороннюю
связь, когда процессродитель пишет информацию в pipe, предполагая,
что ее получит процессребенок, а затем читает информацию из канала
pipe, предполагая, что ее записал порожденный процесс, то могла бы воз-
никнуть ситуация, в которой процессродитель прочитал бы собственную
информацию, а процессребенок не получил бы ничего. Для использова-
ния одного канала pipe в двух направлениях необходимы специальные
средства синхронизации процессов.
Задание: измените предыдущий пример, причем для двухсторонней
связи используйте два канала: один для передачи от родителя ребенку,
второй от ребенка родителю.
Одна из особенностей поведения блокирующегося системного вызо-
ва read() связана с попыткой чтения из пустого канала. Если есть процес
32
Задание: ознакомьтесь по рекомендуемым литературным источни-
кам с организацией файловой системы операционной системы Unix. Рас-
смотрите следующие вопросы:
1) Общая структура файловой системы.
2) Типы файлов.
3) Команды для работы с файлами и каталогами.
Необходимо рассмотреть следующие команды (у некоторых ко-
манд, чтобы не было ошибок, в скобках указано полное имя, от которо-
го получилось сокращенное): имя текущего каталога -pwd, список файлов
в каталоге ls (list), изменить текущий каталог cd, установить связи ln
(link), копировать ср, удалить rm (remove), распечатать файл cat.
Порядок выполнения работы:
1. Изучение структуры файловой системы и команд pwd, cd и ls.
Используя менеджеры файлов и эмулятор терминала, рассмотрите
структуру файловой системы. Отметьте наличие или отсутствие «стан-
дартных» для Unix систем каталогов (например, bin, etc, usr и т.д.), а так-
же отметьте способы обозначения каталогов, файлов ссылок, как в менед-
жерах файлов, так и командной строке терминала. В эмуляторе терминала
для получения справки по команде просмотра содержимого каталога не-
обходимо использовать ключ help (обратите внимание на использование
двух знаков «минус»), например,
ls--help
2. Изучение файлов типа связь и команд для работы с файлами.
Пример использования ссылочного типа файлов приведен в режиме
терминала, чтобы попутно рассмотреть команды создания нового каталога
mkdir и, особенно, команды cat, дающей много возможностей по обработ-
ке текстового файла. Все действия при работе с командами записаны
очень подробно, чтобы обратить внимание на особенности работы в тер-
минальном режиме.
9