Browse Source

Prefer vfork(2) for confedit and simple_exec

Bryan Drewery 9 years ago
parent
commit
b4d482a55a
3 changed files with 5 additions and 4 deletions
  1. 1 0
      doc/UPDATES.md
  2. 3 3
      src/conf.cc
  3. 1 1
      src/shell.cc

+ 1 - 0
doc/UPDATES.md

@@ -8,6 +8,7 @@
   * Fix './wraith -C' file being immediately modified when saving on
     FreeBSD (#94)
   * Support FreeBSD closefrom(2)
+  * Use vfork(2) in some places
 
 # 1.4.7
   * Update server list, 'set -yes servers -' and 'set -yes servers6 -' to get new list.

+ 3 - 3
src/conf.cc

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

+ 1 - 1
src/shell.cc

@@ -570,7 +570,7 @@ int simple_exec(const char* argv[]) {
   pid_t pid, savedpid;
   int status;
 
-  switch ((pid = fork())) {
+  switch ((pid = vfork())) {
     case -1:
       return -1;
     case 0:		//child