diff -r 5c5acc9ab7a5 sys/src/cmd/time.c --- a/sys/src/cmd/time.c Sat Aug 11 16:19:32 2018 +0200 +++ b/sys/src/cmd/time.c Sun Aug 12 20:40:19 2018 +0000 @@ -2,6 +2,7 @@ #include char output[4096]; +vlong t0, t1; void add(char*, ...); void error(char*); void notifyf(void*, char*); @@ -14,16 +15,18 @@ long l; char *p; char err[ERRMAX]; + enum { SEC = 1000000000ULL }; if(argc <= 1){ fprint(2, "usage: time command\n"); exits("usage"); } - switch(fork()){ + switch(rfork(RFFDG|RFREND|RFPROC|RFMEM)){ case -1: error("fork"); case 0: + t0 = nsec(); exec(argv[1], &argv[1]); if(argv[1][0] != '/' && strncmp(argv[1], "./", 2) && strncmp(argv[1], "../", 3)){ @@ -43,12 +46,15 @@ goto loop; error("wait"); } + t1 = nsec(); + output[0] = '\0'; l = w->time[0]; add("%ld.%.2ldu", l/1000, (l%1000)/10); l = w->time[1]; add("%ld.%.2lds", l/1000, (l%1000)/10); l = w->time[2]; add("%ld.%.2ldr", l/1000, (l%1000)/10); + add("%lld.%.9lldt", (t1-t0)/SEC, (t1-t0)%SEC); add("\t"); for(i=1; i