当前位置:  开发笔记 > 运维 > 正文

子进程的内存使用情况?

如何解决《子进程的内存使用情况?》经验,为你挑选了0个好方法。

我在Ubuntu上用C运行一种"沙盒":它需要一个程序,并在用户下安全地运行它nobody(并拦截信号等).此外,它还分配内存和时间限制,并测量时间和内存使用情况.
(如果你很好奇,那就是为了在测试数据上标记程序的某种"在线判断")

目前,我已经适应了safeexec从模块mooshak.虽然大多数东西都能正常工作,但内存使用似乎是一个问题.(这是非常不准确的)

现在我已经尝试了这里的建议并解析了VM /proc/pid/stat,现在修复了准确性问题.但是,对于快速完成的程序,它不起作用,只返回0.

safeexec程序看起来像这样的工作:

    fork()ŝ

    使用execv()在子进程来运行所需的程序

    监视来自父进程的程序,直到子进程终止(使用wait4,这恰好返回CPU使用情况 - 但不是内存?)
    因此它解析/proc/../stat子进程(已被execv替换)

那么为什么VM /proc/child_pid/stat有时等于0?
是因为execv()完成得太快,而且/proc/child_pid/stat只是不可用?
如果是这样,是否有某种其他方式来获取孩子的内存使用情况?
(因为这是为了在一个时间限制内判断程序,我承担不起像valgrind这样的性能损失的东西)

提前致谢.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有