我想找出另一个程序运行所花费的时间;
我正在使用以下代码;
system("time ./a.out > garb");
它给出了非常奇怪的输出。
#include <stdio.h>
int main()
{
long int i;
for ( i = 0; i < 10000000; i++ ) {
printf("Hello World!\n");
}
printf("C Program\n");
return 0;
}
输出
0.31user 0.10system 0:00.41elapsed 99%CPU (0avgtext+0avgdata 1744maxresident)k
0inputs+253912outputs (0major+149minor)pagefaults 0swaps
最佳答案
一种方法是使用wait3
或wait4
函数(如果系统中可用)。
pid_t wait3(int *status, int options, struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options, struct rusage *rusage);
退出子进程后,您的程序将获得子进程的资源使用情况。
struct rusage
的所有字段都不会更新,但是前两个字段会告诉您所需的内容:struct rusage {
struct timeval ru_utime; /* user CPU time used */
struct timeval ru_stime; /* system CPU time used */
...
ru_utime
和ru_stime
的总和是子进程使用的总CPU时间。使用
wait3 / wait4
并不像调用system()
函数那么简单。编辑:
通过将
time
打印输出的这两个值相加,应该得到相同的结果:0.31用户0.10系统
关于c++ - 如何找到其他C程序的运行时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11410345/