aboutsummaryrefslogtreecommitdiff
path: root/miscutils/time.c
diff options
context:
space:
mode:
Diffstat (limited to 'miscutils/time.c')
-rw-r--r--miscutils/time.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/miscutils/time.c b/miscutils/time.c
index f5d1e15fb..5cfbcef8e 100644
--- a/miscutils/time.c
+++ b/miscutils/time.c
@@ -367,20 +367,17 @@ static void summarize(const char *fmt, char **command, resource_t *resp)
Put the statistics in *RESP. */
static void run_command(char *const *cmd, resource_t *resp)
{
- pid_t pid; /* Pid of child. */
+ pid_t pid;
void (*interrupt_signal)(int);
void (*quit_signal)(int);
resp->elapsed_ms = monotonic_ms();
- pid = vfork(); /* Run CMD as child process. */
+ pid = vfork();
if (pid < 0)
- bb_perror_msg_and_die("fork");
- if (pid == 0) { /* If child. */
- /* Don't cast execvp arguments; that causes errors on some systems,
- versus merely warnings if the cast is left off. */
- BB_EXECVP(cmd[0], cmd);
- xfunc_error_retval = (errno == ENOENT ? 127 : 126);
- bb_perror_msg_and_die("can't execute '%s'", cmd[0]);
+ bb_perror_msg_and_die("vfork");
+ if (pid == 0) {
+ /* Child */
+ BB_EXECVP_or_die((char**)cmd);
}
/* Have signals kill the child but not self (if possible). */