/* ISC license. */ #include #include #include #include #include pid_t child_spawn0 (char const *prog, char const *const *argv, char const *const *envp) { pid_t pid ; posix_spawnattr_t attr ; int e ; e = posix_spawnattr_init(&attr) ; if (e) goto err ; e = posix_spawnp(&pid, prog, 0, &attr, (char *const *)argv, (char *const *)envp) ; posix_spawnattr_destroy(&attr) ; if (e) goto err ; return pid ; err: errno = e ; return 0 ; } int main (int argc, char const *const *argv, char const *const *envp) { if (argc < 2) return 1 ; printf ("%d\n", child_spawn0(argv[1], &argv[1], envp)) ; return 0 ; }