diff options
author | midipix <writeonce@midipix.org> | 2017-11-18 19:09:40 -0500 |
---|---|---|
committer | midipix <writeonce@midipix.org> | 2017-11-18 19:11:49 -0500 |
commit | f4ed8e1224eb396f71a1c921ee2489a677deaa0d (patch) | |
tree | 4ade35982f200b79b5b05a07364e8d3dc1b5257f | |
parent | ec6d7a3ad901cf5447353bdee159c99336ac9c2d (diff) | |
download | slibtool-f4ed8e1224eb396f71a1c921ee2489a677deaa0d.tar.bz2 slibtool-f4ed8e1224eb396f71a1c921ee2489a677deaa0d.tar.xz |
process spawning and forking: use dup2, not dup, in the child process.
-rw-r--r-- | src/helper/slbt_archive_import.c | 3 | ||||
-rw-r--r-- | src/helper/slbt_dump_machine.c | 11 |
2 files changed, 5 insertions, 9 deletions
diff --git a/src/helper/slbt_archive_import.c b/src/helper/slbt_archive_import.c index 0d3ea52..c45efa4 100644 --- a/src/helper/slbt_archive_import.c +++ b/src/helper/slbt_archive_import.c @@ -65,9 +65,8 @@ static void slbt_archive_import_child( argv[2] = 0; close(fd[1]); - close(0); - if (dup(fd[0]) == 0) + if (dup2(fd[0],0) == 0) execvp(program,argv); _exit(EXIT_FAILURE); diff --git a/src/helper/slbt_dump_machine.c b/src/helper/slbt_dump_machine.c index fe453e6..7f05790 100644 --- a/src/helper/slbt_dump_machine.c +++ b/src/helper/slbt_dump_machine.c @@ -33,14 +33,11 @@ static void slbt_dump_machine_child( argv[2] = 0; close(fd[0]); - close(0); - close(1); - if ((fd[0] = open("/dev/null",O_RDONLY))) - _exit(EXIT_FAILURE); - - if (dup(fd[1]) == 1) - execvp(program,argv); + if ((fd[0] = open("/dev/null",O_RDONLY)) >= 0) + if (dup2(fd[0],0) == 0) + if (dup2(fd[1],1) == 1) + execvp(program,argv); _exit(EXIT_FAILURE); } |