Переглянути джерело

Revert "Use vfork(2) where exec(2) is immediately done"

This reverts commit bd7f0c70a1758d49ca2ff2a005b13ed5c49ac5c3.
Bryan Drewery 11 роки тому
батько
коміт
6cb2e82cfc
2 змінених файлів з 8 додано та 13 видалено
  1. 4 5
      src/conf.cc
  2. 4 8
      src/shell.cc

+ 4 - 5
src/conf.cc

@@ -222,16 +222,15 @@ confedit()
   signal(SIGCONT, SIG_DFL);
 
   my_gettime(&ts1);
-  switch (pid = vfork()) {
+  switch (pid = fork()) {
     case -1:
       fatal(STR("Cannot fork"), 0);
     case 0:
     {
       /* child */
-      if (execlp(editor, editor, tmpconf.file, (char*)NULL) == -1) {
-        perror(editor);
-        _exit(1);
-      }
+      execlp(editor, editor, tmpconf.file, (char*)NULL);
+      perror(editor);
+      exit(1);
      /*NOTREACHED*/}
     default:
       /* parent */

+ 4 - 8
src/shell.cc

@@ -486,18 +486,14 @@ int simple_exec(const char* argv[]) {
   pid_t pid, savedpid;
   int status;
 
-  switch ((pid = vfork())) {
+  switch ((pid = fork())) {
     case -1:
       break;
     case 0:		//child
       // Close all sockets
-      for (int fd = 3; fd < MAX_SOCKETS; ++fd) {
-        close(fd);
-      }
-      if (execvp(argv[0], (char* const*) &argv[0]) == -1) {
-        _exit(127);
-      }
-      /* NOTREACHED */
+      for (int fd = 3; fd < MAX_SOCKETS; ++fd) close(fd);
+      execvp(argv[0], (char* const*) &argv[0]);
+      _exit(127);
     default:		//parent
       savedpid = pid;
       do {