gpt4 book ai didi

c++ - 如何限制生成的程序可以在 C++ 中使用的内存量

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:41 51 4
gpt4 key购买 nike

在我的 C++ 程序中,我将启动其他程序。如果这些程序使用了一定数量的内存,我希望我的程序终止它们的进程。那怎么办?

我可能会使用 execv 来启动程序。

最佳答案

假设您使用的是 POSIX 系统,您可以通过在 fork() 之后调用 setrlimit(2) 来限制它。例如:

if (fork() == 0) {
struct rlimit limits;
limits.rlim_cur = 10000000; // set data segment limit to 10MB
limits.rlim_max = 10000000; // make sure the child can't increase it again
setrlimit(RLIMIT_DATA, &limits);
execv(...);
}

如果您的子进程试图分配比这更多的内存,它不会被自动终止,但它会无法满足内存分配请求。如果子程序在这种情况下选择中止,那么它就会死掉。如果它选择继续,则不会通知家长这种情况。

关于c++ - 如何限制生成的程序可以在 C++ 中使用的内存量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5784595/

51 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com