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