[Toybox] vfork() deprecated on macOS
enh
enh at google.com
Wed May 11 13:20:50 PDT 2022
the toybox build is pretty noisy on a current mac, complaining that
vfork() should be replaced by fork() or posix_spawn().
looks like it's because they've changed vfork() to just be fork() and
would like people to accept that they understand that by changing
their source to say fork() instead... (i'll copy & paste the man page
here because afaik apple doesn't give us anywhere to link to...)
The vfork system call can be used to create new processes. As of macOS
12.0, this system call behaves identically to the fork(2) system call,
except without calling any handlers registered with pthread_atfork(2).
This system call is deprecated. In a future release, it may begin to return
errors in all cases, or may be removed entirely. It is extremely strongly
recommended to replace all uses with fork(2) or, ideally, posix_spawn(3).
weirdly it looks like you can use _POSIX_C_SOURCE to make this go
away? from their unistd.h:
#if !defined(_POSIX_C_SOURCE)
__deprecated_msg("Use posix_spawn or fork")
#endif
pid_t vfork(void) __WATCHOS_PROHIBITED __TVOS_PROHIBITED;
-Wno-deprecated-declarations in configure works too, though their
threat to make vfork() always fail in a future release makes me
question whether that's such a good idea. (i haven't followed apple
closely enough to know whether there's any precedent for violent
breakage like that. i'm not sure why you wouldn't just remove the
symbol rather than replace it with an implementation that always
fails?)
More information about the Toybox
mailing list