小编v3.*_*v3.的帖子

子进程的内存使用情况?

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

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

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

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

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

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

提前致谢.

c linux memory-management sandbox

6
推荐指数
1
解决办法
2910
查看次数

标签 统计

c ×1

linux ×1

memory-management ×1

sandbox ×1