I am running Ubuntu Linux (2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686 GNU/Linux) and it seems that the command "ulimit -t" does not work properly. I ran:
ulimit -t 1; myprogram
where 'myprogram' is an endless loop. I expected the program to be interrupted after 1 second, but it did not stop. I tried the same thing on a Linux Fedora installation and it worked as expected.
Is there some configuration that has to be set for it to work properly?
-- tsf
As Tsf pointed out, the problem is due to a bug in kernel 2.6.28. I leave my original answer, because I think it could be helpful anyway.
From the ulimit manpage
What counts in respect to ulimit is only CPU time. Try to start your program like this:
That will show you how much CPU time it really uses.
My suspicion is that your endless loop contains
sleep()
and sleep time does not contribute to the CPU time of the process.This gets killed after one second:
This seems to run forever (but of course does not):
Measure CPU time like this...
...and 5 seconds later...
...only 12 ms CPU time used.
I tried it on ubuntu Jaunty Jackalope (9.04)