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