我有下面的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#

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

最佳答案

所以父进程应该wait才能终止所有子进程。否则time将只测量(并等待)第一个进程。这就是您观察到的:第一个进程终止,time打印其工作时间,然后子进程继续其工作。
一种方法是添加

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

就在exit(0);之前。
据我所知,没有办法让time等待所有子进程终止。

关于c - 多进程程序的执行时间(Linux),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20873541/

10-11 22:09
查看更多