多进程程序的执行时间(linux)

时间:2014-01-01 21:37:13

标签: c linux

我有以下c代码

for(i=0;i<n;i++){
child_pid [i]= fork ();
if (child_pid[i] != 0) {
       printf ("");
       printf ("");
}
else
      printf ("");

我想计算这个程序的执行时间 我尝试了以下命令 时间./a.out 5 结果是

real    0m1.009s
user    0m0.000s
sys     0m0.004s
root@bt:~/Desktop# 

我该怎么做才能获得正确的格式化输出? 我可以只显示执行时间而不显示执行结果吗? 提前谢谢

1 个答案:

答案 0 :(得分:3)

因此,您的父进程应wait以终止所有子进程。否则time将仅测量(并等待)第一个进程。这就是你观察到的:第一个进程终止,time打印它的工作时间,然后子进程继续它们的工作。

一种方法是添加类似

的内容
for (i = 0; i < n; i++) if (child_pid[i]) wait(NULL);

exit(0);之前。

据我所知,没有办法让time等到所有子进程终止。