Книга: Программирование на языке Ruby

14.9.3. Получение и установка кодов завершения

14.9.3. Получение и установка кодов завершения

Метод exit возбуждает исключение SystemExit и в конечном счете возвращает указанный код завершения операционной системе (или тому, кто его вызвал). Этот метод определен в модуле Kernel. Метод exit! отличается от него в двух отношениях: он не выполняет зарегистрированные обработчики завершения и по умолчанию возвращает -1.

# ...
if (all_OK)
 exit # Нормально (0).
else
 exit! # В спешке (-1).
end

Когда операционная система печатает возвращенный Ruby код (например, выполнив команду echo $?), мы видим то же самое число, что было указано в программе. Если завершается дочерний процесс, то код его завершения, полученный с помощью метода wait2 (или waitpid2), будет сдвинут влево на восемь битов. Это причуда стандарта POSIX, которую Ruby унаследовал.

child = fork { sleep 1; exit 3 }
pid, code = Process.wait2 # [12554,768]
status = code << 8 #3

Оглавление книги


Генерация: 3.282. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз