我正在编写一个shell,我需要一次启动多个子进程并记录系统时间和用户时间。
到目前为止,我能够做到。唯一的问题是我正在使用 wait4 来获取子程序使用的系统资源并将其放入我的名为 usage 的 rusage 结构中。
如何同时启动所有进程并跟踪用户和系统时间?我可以删除 wait4() 系统调用并在外部使用它来循环,这样我就可以让父级等待,但如果我这样做,那么我只能记录最后一个进程的时间,而不是全部。
你知道我该如何解决这个问题吗?
execute(commandPipev,"STANDARD",0);
wait4(pid,&status,0,&usage);
printf("Child process: %s\t PID:%d\n", commandPipev[0], pid);
printf("System time: %ld.%06ld sec\n",usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);
printf("User time: %ld.%06ld sec\n\n",usage.ru_utime.tv_sec, usage.ru_utime.tv_usec);