setrlimit 可以用于在一段时间内强制执行资源使用限制吗?
我想设置限制 execv 生成的程序可以使用一定量的内存和一定量的 CPU 时间的时间。例如,我想设置一些限制,比如程序在 30 秒内不能超过 100MB,并且程序不能使用 90% 或更多的 CPU 时间超过 20 秒。
I want to set limits for how long programs spawned by execv can use a certain amount of memory and a certain amount of CPU time. For example, I want to set limits like a program cannot exceed 100MB for 30 seconds, and a program cannot use 90% or more of the CPU for more than 20 seconds.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用
RLIMIT_CPU
、RLIMIT_DATA
等,但它们都没有任何持续时间或窗口的概念。如果这些对你有用,那就太好了;如果没有,您能更详细地解释您要解决的问题吗?You can use
RLIMIT_CPU
,RLIMIT_DATA
and friends, but none of them has any concept of time duration or windowing. If those work for you as they are, great; if not, can you explain in more detail the problem you are trying to solve?不。您需要在代码“周围”运行某种监督程序,或者作为 fork/exec 的程序,或者作为拦截 libc/系统调用的注入库。
No. You will need to run some sort of supervisor "around" the code, either as a program that will fork/exec, or as an injected library that will intercept libc/system calls.