How do you handle while(1) fork(); ?

David B. Thomas dt at yenta.alb.nm.us
Fri Jul 13 12:20:30 AEST 1990


jrw at mtune.ATT.COM (Jim Webb) writes:

>In article <841 at massey.ac.nz>, ARaman at massey.ac.nz (A.V. Raman) writes:
>> Is there any way to kill all instances of a process that has the
>> following piece of code in it without having to bring the system down?
>> 
>>    while (1)
>>       fork();

>Under System V, running "kill -9 -1" will send the kill to all processes
>belonging to the invoking user.  So, to stop the above, you could do that
>as the user (if s/he has any processes left) or by becoming root and then
>entering:

>		su pest -c "kill -9 -1"

>if no process slots are available to the user.  Obviously, this kills
>everything that user is running, not just the above wonderfulness.

Am I missing something?  I thought the kernel table had only so many
slots for processes on the whole system, each of which is available
to anyone.  Therefore, the nasty code would hog every last slot,
preventing the administrator's shell from forking 'su'.  And you can't
'exec' su, since then su would still fail to fork 'kill', and then you're
logged out!

Maybe unix has some saneness I haven't learned about yet to prevent this.

						David



More information about the Comp.unix.questions mailing list