我在Linux桌面上尝试了这个实验:
int main() { while(1) fork(); return 0; }
我以普通用户(不是root用户)的身份运行这个程序,我惊讶地发现它打倒了我的系统,它已经变得没有反应.我原本希望由于资源限制用尽,我的过程会被杀死,但显然事实并非如此.有什么想法吗?
谢谢,希德.
PS:这是我的办公室Linux盒子,我正在家里进行实验,我希望明天重新启动时一切都会好的....
你重新发明了一个叉炸弹.
我认为大多数Linux发行版默认情况下不会设置每用户资源限制.你当然可以配置它们,但你可能没有.
重启后机器会很好 - 除非CPU使用率导致过热问题.
要防止普通用户生成太多进程,您需要将配置添加到/etc/security/limits.conf
ulimit
如果您认为要运行可能启动太多进程或耗尽太多其他资源的程序,则可以使用设置适用于当前会话的限制.