Найти время процессора и системные времена процесса в linux

У меня есть основная программа, которая создает двух детей, и каждый ребенок звонит execlv. В конце программы, как рассчитать процессорные времена и системные времена для родительского и двух процессов?

#include <sys/types.h>
#include <sys/wait.h>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <signal.h>



int main()
{


    pid_t pid1,pid2,wid;  // variable for parent and two children
  char *my_args[3];     // strign array for containing the arguments for executing sigShooter1
 // int aInt = 368;       //
  char str[15];     // strign to contain the pids of children when passing as command line arguments


   pid1 = fork();
   if (pid1 < 0)
    {
      fprintf(stderr, ": fork failed: %s
", strerror(errno));
      exit(1);
    }

    if(pid1 == 0)
    {
      my_args[0] = "sigperf1";
      my_args[1] = "0";
      my_args[2] = NULL;
      execv("sigshooter1",my_args);
      fprintf(stderr,"sigshooter1 cannot be executed by first child...");
      exit(-1);
    }

    pid2 = fork();

    if(pid2 < 0)
    {
       fprintf(stderr, ": fork failed: %s
", strerror(errno));
       exit(1);
    }

    if(pid2 == 0)
    {
      sprintf(str, "%d", pid1);
      my_args[0] = "sigperf1";
      my_args[1] = str;
      my_args[2] = NULL; 
     // printf("this is converted = %s
",my_args[1]);
      //sleep(1);
      execv("sigshooter1",my_args);
      fprintf(stderr,"sigshooter1 cannot be executed by second child...");
      exit(-1);
    }


wid = wait(NULL);



}

process,resources,

1

Ответов: 1


1

Для этого вам понадобится профайлер. Для начала вы можете запустить, perf stat ./a.outчтобы получить общее время процессора всех трех процессов и perf stat -i ./a.outполучить процессорное время только для родительского процесса.

Если вам нужно что-то более подробное, взгляните на более серьезные инструменты, например valgrindили gprof.

процесс, ресурсы,
Похожие вопросы