[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
Упражнения
Связь через программный канал
Напишите программу, которая создает два подпроцесса, взаимодействующих
через программный канал. Первый процесс выдает в канал текст,
состоящий из символов верхнего и нижнего регистров. Второй процесс
переводит все символы в верхний регистр, и выводит полученный текст на
терминал. { fork(2), pipe(2) } Подсказка: см. ctype(3C) и conv(3C).
Связь с использованием функций стандартной библиотеки
Используйте стандартные библиотечные функции { popen(3),pclose(3) }
для выполнения тех же операций, что и в первом упражнении.
Подсчет пустых строк в файле
Напишите программу, которая подсчитывает пустые строки в файле,
используя команду wc(1) { popen(3), pclose(3) }
Генератор случайных чисел
Напишите программу, которая генерирует сортированный список из ста
случайных чисел в диапазоне от 0 до 99. Распечатайте числа по десять в
строке. Используйте p2open(3G), чтобы запустить sort(1). { rand(3C),
srand(3C) }
Интерпретатор shell - продолжение
Измените ваш командный интерпретатор так, чтобы он позволял создавать
конвейеры. Если вы добавили управление заданиями в упражнениях
Раздела 1, вы можете модифицировать программу так, чтобы все процессы
в конвейере принадлежали к одной группе. Тогда, например, SIGINT мог
бы прервать все процессы в конвейере первого плана. { pipe(2), dup(2),
close(2) }
Игровая программа
Скопируйте программу game.c из директории exercises и модифицируйте ее
так, чтобы она взаимодействовала с другой программой, которую вы
напишете. game - игра в угадывание чисел. Две программы должны
взаимодействовать друг с другом через два именованных канала или с
использованием двух системных вызовов pipe(2). Во втором случае,
сделайте программу game родительским процессом для вашей программы.
Модифицированная game создает два именованных канала: один для чтения
угаданного числа, второй для записи ответа. game создает случайное
число от 0 до 999 и слушает "угадывающий" канал на предмет ответа.
Затем он шлет угадывающей программе через второй канал код,
показывающий, было ли предложенное число слишком маленьким, слишком
большим, или правильным. Вторая программа, в свою очередь, печатает,
ответ программы game. Обе программы завершаются, когда число будет
угадано правильно. { mknod(2) }