1dd7040f

ПОЯСНЕНИЯ


В строках 4-8 выполняется проверка на ошибки. Поскольку cuchk не имеет никаких опций, в командной строке не должно быть никаких параметров. Если параметры присутствуют, это считается ошибкой. Строки 10-15 организуют вечный цикл while. Обратите внимание, что амперсанд в строке 15 автоматически запускает cuchk в фоновом режиме, ведь нет никакого резона выполнять эту программу в приоритетном режиме.

В строке 12 выполняется команда "ps -e", которая выдает информацию о состоянии всех значительных пользовательских процессов. Эти данные пропускаются по конвейеру через fgrep. Утилита fgrep ищет наличие символов "cu". Мы надеемся, что эти символы соответствуют только процессам cu, которые мы ищем. Они могут, однако, относиться к чему-то совершенно неожиданному, например "picuser" или к какому-то аналогично построенному имени. Результат работы команды fgrep направляется на устройство /dev/null, чтобы избавиться от лишней информации. Нас интересует только статус завершения команды fgrep. Он сообщает нам, найдено ли вхождение символов "cu" или нет.

В конце строки 12 присутствует символ обратной косой черты, указывающий интерпретатору shell, что следующая физическая строчка является на самом деле частью той же самой программной строки и что нужно добавить ее к строке 12, а не выполнять самостоятельно. Разбиение длинных строк на несколько меньших строк с помощью символов обратной косой черты позволяет нам получать красиво оформленный, более наглядный исходный код.

Строка 13 выполняется в том случае, если fgrep отработала успешно (т.е. если она выдает нулевой статус завершения). Это означает, что символы "cu" найдены, а значит процесс cu работает и в настоящее время не доступен. Поэтому процесс cuchk засыпает на 5 секунд. Когда он пробуждается, выполнение продолжается со строки 10, возобновляется вечный цикл и проверка процессов продолжается. Если fgrep не находит символы "cu" (возвращается ненулевой статус завершения), то выполняется строка 14, которая выдает сообщение о том, что программа cu свободна, и работа программы завершается. Таким образом, мы сразу же знаем, что линия cu открыта для использования, поэтому мы можем поскорее занять ее.




Начало  Назад  Вперед