当前位置: 技术问答>linux和unix
RedHat下ulimit的问题
来源: 互联网 发布时间:2015-09-21
本文导语: 我在RedHat下输入ulimit -u 1,想限制可运行的最大并发进程数,使用ulimit -a查看,确实在max user processes一项中变成了1,于是我编写了以下一段测试程序: #include int main() { printf("Hellon"); fork(); fork(); fork(); printf("byen"); return...
我在RedHat下输入ulimit -u 1,想限制可运行的最大并发进程数,使用ulimit -a查看,确实在max user processes一项中变成了1,于是我编写了以下一段测试程序:
#include
int main()
{
printf("Hellon");
fork();
fork();
fork();
printf("byen");
return 0;
}
本想在运行这段程序的时候会出错,但是却一切正常,就跟没有设置最大并发进程数一样,请问这是什么道理?
另外,Solaris中对应的ulimit命令没有-u这一项,请问用什么命令可以实现相同的功能?谢谢!
#include
int main()
{
printf("Hellon");
fork();
fork();
fork();
printf("byen");
return 0;
}
本想在运行这段程序的时候会出错,但是却一切正常,就跟没有设置最大并发进程数一样,请问这是什么道理?
另外,Solaris中对应的ulimit命令没有-u这一项,请问用什么命令可以实现相同的功能?谢谢!
|
1太少了,你登录系统以后,已经运行了一个shell。这样什么都不做就已经达到1了。
设置成1就啥也干不了了。
不要用root账号来做这个实验,用普通用户账号……
设置成1就啥也干不了了。
不要用root账号来做这个实验,用普通用户账号……
|
这只有一个原因就是 你用普通用户登录
su - 成root
然后执行ulimit -u 1
然后执行 你的fork程序 肯定不会报错
你输入env看看 USER 确保你用的是执行ulimit的那个环境 里面的用户 和你调用fork例程的环境变量里的USER一样
我执行如下
./a.out
-bash: fork: Resource temporarily unavailable
su - 成root
然后执行ulimit -u 1
然后执行 你的fork程序 肯定不会报错
你输入env看看 USER 确保你用的是执行ulimit的那个环境 里面的用户 和你调用fork例程的环境变量里的USER一样
我执行如下
./a.out
-bash: fork: Resource temporarily unavailable
|
是会出错的,你确定你执行程序的用户是你设置的用户吗。