Things like { some_program; } >/dev/null use vfork, so use vfork
similarly for things like some_program >/dev/null.
This cannot be done for command substitutions, because of two problems:
- Redirections might cause the error message for later redirections or for an unknown command to be sent to the pipe (to be substituted), and this might cause a deadlock if the message is too long.
- The assignment of the pipe needs to come before instead of after the redirections.