ulimit -t 1
означает, что предел установлен на 1 секунду времени центрального процессора. Если ваша программа бесконечного цикла использует любой вид sleep
во внутреннем цикле, то она будет практически не использовать процессорное время. Это означает, что он не будет убит за 1 секунду реального времени в часы. На самом деле для его распределения в 1 секунду может потребоваться несколько минут или часов.
Что произойдет, если вы запустите команду вне SCons? Возможно, у вас нет разрешения на изменение лимита на все ...
ulimit -t 1; ./myprogram
Например, он может сказать следующее, если лимит уже установлен в 0:
bash: ulimit: cpu time: cannot modify limit: Operation not permitted
Edit: это похоже the -t option is broken on Ubuntu 9.04. Исправление было совершено 05 июня 2009 года, но может потребоваться некоторое время, чтобы просачиваться в обновления - это может быть не исправлено до 9.10.
В качестве исторической заметки эта проблема больше не существует в Ubuntu 10.04.
Моя программа бесконечный цикл был что-то вроде (в C): в то время как (1) х = 1; так, чтобы в нем не было сна. - tsf – Tsf
Кажется, что это не проблема СОН! Я пробовал ulimit -t 1; ./myprogram Он работал (был прерван) под установку Linux Fedora, но не работал под Ubuntu. Я должен проверить, зависит ли это от некоторого значения конфигурации. Спасибо! – Tsf
Ах! Я пробовал это на openSuse, и это сработало. На Убунту ... ничего. Нет ошибки, но не убить через 1 секунду. – richq