Command.spawn posix_spawn support for NetBSD / DragonFlyBSD.
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 https://github.com/rust-lang/libc/commit/92d50c9c79e7038db097344d8f00e774277ee519) 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.
This can be labeled as an enhancement.
Bryan Drewery at 2018-03-02 19:38:42