[PATCH 15/22] Removed code used when NXT_HAVE_POSIX_SPAWN is false.

Alejandro Colomar alx.manpages at gmail.com
Sun Jun 19 13:50:25 UTC 2022


posix_spawn(3POSIX) was introduced by POSIX.1d
(IEEE Std 1003.1d-1999), and was later consolidated in
POSIX.1-2001, requiring it in all POSIX-compliant systems.
It's safe to assume it's always available, more than 20 years
after its standardization.

Link: <https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/spawn.h.html>
---
 auto/unix         | 15 ---------------
 src/nxt_process.c | 48 -----------------------------------------------
 src/nxt_unix.h    |  2 --
 3 files changed, 65 deletions(-)

diff --git a/auto/unix b/auto/unix
index 7c241650..45c6a139 100644
--- a/auto/unix
+++ b/auto/unix
@@ -178,21 +178,6 @@ if [ $nxt_found = no ]; then
 fi
 
 
-nxt_feature="posix_spawn()"
-nxt_feature_name=NXT_HAVE_POSIX_SPAWN
-nxt_feature_run=
-nxt_feature_incs=
-nxt_feature_libs=
-nxt_feature_test="#include <spawn.h>
-                  #include <unistd.h>
-
-                  int main(int argc, char *argv[]) {
-                      (void) posix_spawn(NULL, \"\", NULL, NULL, argv, NULL);
-                      return 0;
-                  }"
-. auto/feature
-
-
 # NetBSD 1.0, OpenBSD 1.0, FreeBSD 2.2 setproctitle().
 
 nxt_feature="setproctitle()"
diff --git a/src/nxt_process.c b/src/nxt_process.c
index b7174850..bc59e7d5 100644
--- a/src/nxt_process.c
+++ b/src/nxt_process.c
@@ -798,8 +798,6 @@ nxt_process_send_ready(nxt_task_t *task, nxt_process_t *process)
 }
 
 
-#if (NXT_HAVE_POSIX_SPAWN)
-
 /*
  * Linux glibc 2.2 posix_spawn() is implemented via fork()/execve().
  * Linux glibc 2.4 posix_spawn() without file actions and spawn
@@ -834,52 +832,6 @@ nxt_process_execute(nxt_task_t *task, char *name, char **argv, char **envp)
     return pid;
 }
 
-#else
-
-nxt_pid_t
-nxt_process_execute(nxt_task_t *task, char *name, char **argv, char **envp)
-{
-    nxt_pid_t  pid;
-
-    /*
-     * vfork() is better than fork() because:
-     *   it is faster several times;
-     *   its execution time does not depend on private memory mapping size;
-     *   it has lesser chances to fail due to the ENOMEM error.
-     */
-
-    pid = vfork();
-
-    switch (pid) {
-
-    case -1:
-        nxt_alert(task, "vfork() failed while executing \"%s\" %E",
-                  name, nxt_errno);
-        break;
-
-    case 0:
-        /* A child. */
-        nxt_debug(task, "execve(\"%s\")", name);
-
-        (void) execve(name, argv, envp);
-
-        nxt_alert(task, "execve(\"%s\") failed %E", name, nxt_errno);
-
-        exit(1);
-        nxt_unreachable();
-        break;
-
-    default:
-        /* A parent. */
-        nxt_debug(task, "vfork(): %PI", pid);
-        break;
-    }
-
-    return pid;
-}
-
-#endif
-
 
 nxt_int_t
 nxt_process_daemon(nxt_task_t *task)
diff --git a/src/nxt_unix.h b/src/nxt_unix.h
index 5d7a59b6..fab51f38 100644
--- a/src/nxt_unix.h
+++ b/src/nxt_unix.h
@@ -156,9 +156,7 @@
 #include <setjmp.h>
 #include <sched.h>
 #include <signal.h>
-#if (NXT_HAVE_POSIX_SPAWN)
 #include <spawn.h>
-#endif
 #include <stdarg.h>
 #include <stddef.h>                 /* offsetof() */
 #include <stdio.h>
-- 
2.36.1



More information about the unit mailing list