Quantcast
Channel: Active questions tagged gcc - Stack Overflow
Viewing all articles
Browse latest Browse all 22296

sys/user time & childs sys/user time in linux

$
0
0

Based on example 8.31 of APUE, suppose the following code. This example shows user/sys time of a process and also user/sys times of child processes for each command (passed as argvs)

#include <unistd.h>#include <stdlib.h>#include <stdio.h>#include <sys/times.h>void do_cmd(int, const char *);void pr_times(clock_t, clock_t, struct tms *, struct tms *);int main (int argc, char *argv[]) {        long clktck = 0;        clktck=sysconf(_SC_CLK_TCK);        for (int i=1; i<argc; i++)                do_cmd(clktck, argv[i]);        exit (0);}void do_cmd(int clktck, const char *cmd) {        struct tms      tmsstart, tmsend;        clock_t         start, end;        start=times(&tmsstart);        system(cmd);        end = times(&tmsend);        printf("command:%s\n", cmd);        pr_times(clktck, end-start, &tmsstart, &tmsend);        printf("\n");}void pr_times(clock_t clktck, clock_t real, struct tms *start, struct tms *end) {        printf("real:%7.2f\n",  real/(double)clktck);        printf("user:%7.2f\n",  (end->tms_utime - start->tms_utime) / (double)clktck); // this line        printf("sys:%7.2f\n",   (end->tms_stime - start->tms_stime) / (double)clktck);  // and this line        printf("cuser:%7.2f\n", (end->tms_cutime- start->tms_cutime)/ (double)clktck);        printf("csys:%7.2f\n",  (end->tms_cstime- start->tms_cstime)/ (double)clktck);}

My question is, by this scheme of command execution, is it possible to have user/sys time more than zero (and how) or always these two values is zero (becuase executed as forked(child process) ) ?

I execute the program like following

./a.out "sleep 10" "find / -name a* 1>/dev/null 2>&1" 'bash -c "for ((i=0;i<1000000;i++)); do :; done;" '

Viewing all articles
Browse latest Browse all 22296

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>