我有以下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#
我该怎么做才能获得正确的格式化输出? 我可以只显示执行时间而不显示执行结果吗? 提前谢谢
答案 0 :(得分:3)
因此,您的父进程应wait
以终止所有子进程。否则time
将仅测量(并等待)第一个进程。这就是你观察到的:第一个进程终止,time
打印它的工作时间,然后子进程继续它们的工作。
一种方法是添加类似
的内容for (i = 0; i < n; i++) if (child_pid[i]) wait(NULL);
在exit(0);
之前。
据我所知,没有办法让time
等到所有子进程终止。