Почему это не отказывает? Разве я не делящийся на нуль здесь?

Существует также 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, но это был действительно просто пух сверх команды, обеспеченной выше.

14
задан Stephen Canon 17 February 2011 в 21:58
поделиться

4 ответа

В среде с плавающей запятой по умолчанию в OS X деление с плавающей запятой на ноль не вызывает прерывания или исключения. 0.0 / 0.0 вместо этого вернет NaN и поднимет недопустимый флаг состояния с плавающей запятой в fpscr. Деление ненулевого значения на 0,0 вернет бесконечность и поднимет флаг деления на ноль.

Вы можете проверить эти условия, если вам нужно, используя функции isnan () и isinf (), определенные в математике. .h

29
ответ дан 1 December 2019 в 07:27
поделиться

Ошибка деления на ноль возникает только при целочисленном делении. Для числа с плавающей запятой обычно вы получаете бесконечность, если дивиденд не равен нулю.

5
ответ дан 1 December 2019 в 07:27
поделиться

Ошибки с плавающей точкой обычно не вызывают исключения.

1
ответ дан 1 December 2019 в 07:27
поделиться

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

Из стандарта C [99], §6.5.5.5:

Результатом оператора / является частное от деления первого операнд по секунде; результат оператор% - остаток. В обе операции, если значение второй операнд равен нулю, поведение не определено.

1
ответ дан 1 December 2019 в 07:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: