diff --git a/src/tools/pw-container.c b/src/tools/pw-container.c index 02b7c8815..fa39b3450 100644 --- a/src/tools/pw-container.c +++ b/src/tools/pw-container.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -283,7 +284,17 @@ int main(int argc, char *argv[]) } if (optind < argc) { - system(argv[optind++]); + pid_t pid = fork(); + if (pid < 0) { + fprintf(stderr, "can't fork: %m\n"); + return -1; + } + if (pid == 0) { + execvp(argv[optind], &argv[optind]); + fprintf(stderr, "can't exec %s: %m\n", argv[optind]); + _exit(127); + } + waitpid(pid, NULL, 0); } else { fprintf(stdout, "new socket: %s\n", temp); pw_main_loop_run(data.loop);