我在Ubuntu上有一个C程序。这个程序需要打开很多文件。所以我必须按以下方式运行它:
ulimit -n 10000; ./xyz
想知道是否有办法在程序xyz本身内做某事来增加限制。该程序以root用户身份运行,因此具有必要的权限。在C程序(源代码)中,我调用了
system("ulimit -n 10000");
但它不起作用,这并不奇怪。
答案 0 :(得分:1)
请参阅getrlimit(2)
考虑使用getrlimit(2)
和setrlimit(2)
例程。请注意,只有以超级用户权限运行的进程才能增加限制;任何用户都可以减少他们的资源限制。
答案 1 :(得分:0)
为什么不写一个包装器?
xyz_wrapper.sh
ulimit -n 10000; ./xyz
然后只需运行包装器
./xyz_wrapper.sh