|
|
1.1 ! root 1: #ifndef lint ! 2: static char *sccsid = "@(#)time.c 4.5 (Berkeley) 7/1/83"; ! 3: #endif ! 4: ! 5: /* ! 6: * time ! 7: */ ! 8: #include <stdio.h> ! 9: #include <signal.h> ! 10: #include <sys/types.h> ! 11: #include <sys/time.h> ! 12: #include <sys/resource.h> ! 13: ! 14: main(argc, argv) ! 15: int argc; ! 16: char **argv; ! 17: { ! 18: int status; ! 19: register int p; ! 20: struct timeval before, after; ! 21: struct rusage ru; ! 22: ! 23: if (argc<=1) ! 24: exit(0); ! 25: gettimeofday(&before, 0); ! 26: p = fork(); ! 27: if (p < 0) { ! 28: perror("time"); ! 29: exit(1); ! 30: } ! 31: if (p == 0) { ! 32: execvp(argv[1], &argv[1]); ! 33: perror(argv[1]); ! 34: exit(1); ! 35: } ! 36: signal(SIGINT, SIG_IGN); ! 37: signal(SIGQUIT, SIG_IGN); ! 38: while (wait3(&status, 0, &ru) != p) ! 39: ; ! 40: gettimeofday(&after, 0); ! 41: if ((status&0377) != 0) ! 42: fprintf(stderr, "Command terminated abnormally.\n"); ! 43: after.tv_sec -= before.tv_sec; ! 44: after.tv_usec -= before.tv_usec; ! 45: if (after.tv_usec < 0) ! 46: after.tv_sec--, after.tv_usec += 1000000; ! 47: printt("real", &after); ! 48: printt("user", &ru.ru_utime); ! 49: printt("sys ", &ru.ru_stime); ! 50: fprintf(stderr, "\n"); ! 51: exit (status>>8); ! 52: } ! 53: ! 54: printt(s, tv) ! 55: char *s; ! 56: struct timeval *tv; ! 57: { ! 58: ! 59: fprintf(stderr, "%9d.%01d %s ", tv->tv_sec, tv->tv_usec/100000, s); ! 60: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.