Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
UNIX.doc
Скачиваний:
6
Добавлен:
01.04.2025
Размер:
11 Мб
Скачать
☆

Возвращаемое значение

Презентация 4-07: возвращаемое значение

Каждый процесс при завершении возвращает своему родительскому процессу специальный код завершения программы. Этот код может использоваться для получения результата выполнения программы и для проверки корректности её выполнения (возврата кода ошибки).

Традиционно для UNIX, в случае успешного выполнения программа (а также большинство системных функций) возвращает значение 0. Другие значения (все, отличные от 0) означают тот или иной вид ошибки. Так как программы часто выводят информацию об ошибках через специальный поток вывода ошибок (stderr), возвращаемые значения чаще всего могут принимать только два значения: «ноль» и «не ноль».

Если рассмотреть простейший пример программы на языке C:

Пример 2.3. Возвращаемое значение в программе на языке C

int main(int argc, char* argv[]) {

...

if(error) {

exit(1);

}

...

return 0;

}

видно, что программы передают код завершения через возвращаемое значение главной функции (main) или как параметр функции exit.

В командной строке результат выполнения программы можно проанализировать с помощью специальной переменной ($?):

user@desktop ~ $ test -f /tmp/file.txt

user@desktop ~ $ echo $?

0

Эффективное использование командной строки

Презентация 4-08: возможности командной оболочки

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

Во-первых, поскольку командная строка — основной интерфейс взаимодействия с системой в UNIX-подобных операционных системах, пользователь значительную часть времени работает с командной строкой. Поэтому для пользователя очень важны средства экономии усилий, позволяющие свести к минимуму число интерфейсных жестов (в случае командной строки в качестве жестов выступают главным образом нажатия на клавиши). Современные командные оболочки UNIX-систем включают целый ряд средств для экономии нажатий, основные мы перечислим ниже.

Второй путь к эффективному использованию командной строки заложен в самой природе командного языка как типа интерфейса. Так, язык любой командной оболочки UNIX предоставляет гибкие средства объединения команд, которые позволяют запрограммировать логику взаимодействия нескольких программ в виде одной, пусть сложной, команды в командной строке. Дополнительной особенностью UNIX являются гибкие возможности объединения ввода/вывода разных команд. Так, одной командой могут быть описаны весьма сложные многоступенчатые действия, вовлекающие произвольное количество объектов, например, сотни файлов. Таким образом, одна команда способна заменить сотни монотонных повторений однотипных действий.

По существу, все средства интеграции команд — операторы циклов, условные операторы, присваивания переменных — в совокупности составляют полноценный язык программирования, интерпретатором которого и является командная оболочка. А все утилиты, имеющиеся в системе, можно считать его операторами. Так, последовательность команд shell, записанная в файл при соблюдении определённых правил представляет собой готовую к выполнению самостоятельную программу — командный сценарий (в обиходе именуемый калькой с английского скрипт).

Программирование на shell выходит за рамки данного курса, однако ниже будут рассмотрены основные средства связывания команд, необходимые любому пользователю.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]