/
githubmirror
/
iproute2
Обзор
Документация
Войти
/
githubmirror
/
iproute2
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v7.1.0
lib/exec.c
51 строка
823 B
Yedaya Katsman
ip: Exit exec in child process if setup fails
25 апр 2024, 22:00
25 апр 2024, 22:00
70ba338
Код
Авторство
О чём код?
/* SPDX-License-Identifier: GPL-2.0 */ #include <sys/wait.h> #include <stdio.h> #include <errno.h> #include <unistd.h> #include "utils.h" #include "namespace.h" int cmd_exec(const char *cmd, char **argv, bool do_fork, int (*setup)(void *), void *arg) { fflush(stdout); if (do_fork) { int status; pid_t pid; pid = fork(); if (pid < 0) { perror("fork"); exit(1); } if (pid != 0) { /* Parent */ if (waitpid(pid, &status, 0) < 0) { perror("waitpid"); exit(1); } if (WIFEXITED(status)) { return WEXITSTATUS(status); } exit(1); } } if (setup && setup(arg)) { if (do_fork) { /* In child, nothing to do */ _exit(1); } return -1; } if (execvp(cmd, argv) < 0) fprintf(stderr, "exec of \"%s\" failed: %s\n", cmd, strerror(errno)); _exit(1); }