我在Linux桌面上尝试了这个实验:
int main()
{
while(1)
fork();
return 0;
}
我以普通用户(不是root用户)运行此程序,我惊讶地发现它导致我的系统崩溃,它已经变得没有反应。 我原本希望由于资源限制用尽,我的过程会被杀死,但显然事实并非如此。有什么想法吗?
感谢, SID。
PS:这是我的办公室Linux盒子,我在家里试验,我希望一切 我明天重启时会好的....答案 0 :(得分:12)
你重新发明了fork bomb。
我认为大多数Linux发行版默认情况下不会设置每用户资源限制。你当然可以配置它们,但你可能没有。
重启后机器会很好 - 除非CPU使用率导致过热问题。
为防止普通用户产生太多进程,您需要将配置添加到/etc/security/limits.conf
如果您认为自己要运行可能启动太多进程或耗尽太多其他资源的程序,则可以使用ulimit
设置适用于当前会话的限制。
答案 1 :(得分:2)
你可以在wikipedia找到相关内容。
答案 2 :(得分:1)
最有可能的是,您的系统管理员未设置用户限制。如果没有设置用户限制,则他们无法保护任何人。