Open
Description
Issue #48624 is adding support for the more efficient posix_spawn
in some cases of Command.spawn
. The posix_spawn
of NetBSD and DragonFlyBSD supports returning ENOENT directly so these platforms can grow support for it. They just need the libc bindings (like in rust-lang/libc@92d50c9) and then an update to libstd's Command target list as done in #48624.
OpenBSD does not support this though as their implementation uses fork
rather than vfork
and lacks a communication back to the parent about the exec
failure.
This test .c file was used to check for the needed support:
#include <assert.h>
#include <stdlib.h>
#include <errno.h>
#include <spawn.h>
extern char **environ;
int
main(void)
{
pid_t pid;
char *pargv[] = {"/nonexistent", NULL};
int status = posix_spawn(&pid, "/nonexistent", NULL, NULL, pargv, environ);
assert(status == ENOENT);
return 0;
}
A failing assert means the platform cannot grow posix_spawn
support.