@ckure Much like SQL, the footgun way is the easiest and most well-documented way of doing things. "Teach better" isn't likely to start working now when it hasn't for 20+ years.
But execvp instead of exec, however that's done in your current favourite language today, is exactly how you avoid wrapping a shell, just like you suggested.
The rest is just avoiding shell for scripting as well?