Существует также ulimit, который может использоваться для ограничения времени выполнения, доступного подпроцессам.
ulimit -t 10
Пределы процесс к 10 секундам процессорного времени.
Для фактического использования его для ограничения нового процесса, а не текущего процесса можно хотеть использовать сценарий обертки:
#! /usr/bin/env python
import os
os.system("ulimit -t 10; other-command-here")
другая-команда может быть любым инструментом. Я выполнял Java, Python, C и версии Схемы различных алгоритмов сортировки и вход, сколько времени они взяли при ограничении времени выполнения 30 секундами. Приложение Python какао генерировало различные командные строки - включая аргументы - и сопоставило времена в файл CSV, но это был действительно просто пух сверх команды, обеспеченной выше.
В среде с плавающей запятой по умолчанию в OS X деление с плавающей запятой на ноль не вызывает прерывания или исключения. 0.0 / 0.0 вместо этого вернет NaN и поднимет недопустимый флаг состояния с плавающей запятой в fpscr. Деление ненулевого значения на 0,0 вернет бесконечность и поднимет флаг деления на ноль.
Вы можете проверить эти условия, если вам нужно, используя функции isnan () и isinf (), определенные в математике. .h
Ошибка деления на ноль возникает только при целочисленном делении. Для числа с плавающей запятой обычно вы получаете бесконечность, если дивиденд не равен нулю.
Ошибки с плавающей точкой обычно не вызывают исключения.
Потому что это неопределенное поведение. Вашей программе разрешено вести себя любым способом, который может включать сбой или показ нам последний проблеск вселенной, которую вы так неосторожно уничтожили делением на ноль.
Из стандарта C [99], §6.5.5.5:
Результатом оператора / является частное от деления первого операнд по секунде; результат оператор% - остаток. В обе операции, если значение второй операнд равен нулю, поведение не определено.