version 1.24, 2017/07/22 17:01:09 |
version 1.25, 2017/08/21 13:38:02 |
|
|
break; |
break; |
default: |
default: |
usage(); |
usage(); |
/* NOTREACHED */ |
|
} |
} |
} |
} |
|
|
|
|
clock_gettime(CLOCK_MONOTONIC, &before); |
clock_gettime(CLOCK_MONOTONIC, &before); |
switch(pid = vfork()) { |
switch(pid = vfork()) { |
case -1: /* error */ |
case -1: /* error */ |
perror("time"); |
warn("fork"); |
exit(1); |
return 1; |
/* NOTREACHED */ |
|
case 0: /* child */ |
case 0: /* child */ |
execvp(*argv, argv); |
execvp(*argv, argv); |
perror(*argv); |
warn("%s", *argv); |
_exit((errno == ENOENT) ? 127 : 126); |
_exit((errno == ENOENT) ? 127 : 126); |
/* NOTREACHED */ |
|
} |
} |
|
|
/* parent */ |
/* parent */ |
|
|
|
|
if (exitonsig) { |
if (exitonsig) { |
if (signal(exitonsig, SIG_DFL) == SIG_ERR) |
if (signal(exitonsig, SIG_DFL) == SIG_ERR) |
perror("signal"); |
return 128 + exitonsig; |
else |
else |
kill(getpid(), exitonsig); |
raise(exitonsig); |
} |
} |
exit(WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE); |
return WIFEXITED(status) ? WEXITSTATUS(status) : EXIT_FAILURE; |
} |
} |
|
|
__dead void |
__dead void |