У меня есть простая функция, которая создает дочерний процесс, ждет его завершения и печати системы ЦП и времени пользователя.Rusage with wait4() не показывает процессорное время готового дочернего процесса
int PrintChildProcessTime(char **arg)
{
pid_t pid;
int status;
struct rusage usage;
if ((pid=fork()) == 0)
{
execvp(arg[0],arg);
perror("Execvp error");
_exit(1);
}
else if (pid > 0)
{
wait4(pid, &status, 0, &usage);
printf ("CPU time: %ld.%06ld sec user, %ld.%06ld sec system\n", usage.ru_utime.tv_sec, usage.ru_utime.tv_usec, usage.ru_stime.tv_sec, usage.ru_stime.tv_usec);
}
else
{
perror("Fork error");
_exit(2);
}
}
Дело в том, даже когда я прохожу sleep 10
в **arg
и родительский процесс ждет ребенка до конца, то он по-прежнему показывает 0,000000 как в системе и пользователю процессорного времени.
Что я делаю неправильно? Благодарим вас за помощь.