【发布时间】:2012-01-11 01:52:59
【问题描述】:
我正在开发一个可能会产生多个子进程的程序,我需要获取每个子进程使用的 CPU 时间的准确信息,即使有多个子进程同时运行。我在父进程的单独线程上使用 wait4(2) 来执行此操作,效果很好。
但是,这种方法提供了特定子进程所花费的总时间,我只对特定事件之后花费的时间量感兴趣,即子进程的第一次输出到标准输出。我研究了获取子进程 CPU 时间的其他方法,例如 getrusage(2) 和 times(3),但这些似乎无法区分多个子进程的时间,而是提供所有子进程的时间总和。
我正在开发一个文本编辑器应用程序,它允许用户以各种不同的语言运行脚本和代码,并且该应用程序具有内置的代码计时功能。该应用程序依赖 bash 脚本来运行用户代码,而我的 bash 脚本所做的第一件事就是输出一个开头字节 (0x02)。在此之后,bash 脚本会执行运行用户代码所需的任何操作,这就是我想要做的事情。 Bash 可能会做一些初始化(设置 PATH 变量等),这可能需要 30 或 40 毫秒才能完成,我不希望初始化与其余部分一起计时。例如,如果用户代码是 C 语言中的简单 Hello World 类型程序,则计时功能可能会显示类似 41 毫秒的时间,而不是实际运行代码所需的 1 毫秒。
关于如何做到这一点的任何想法?
谢谢:)
【问题讨论】: