Agreed. When in security classes we were taught to use e.g. execve() instead of system(), it wasn't because shells were thought of as particularly vulnerable. You just want to use a tool that has the minimum possible feature set, so you can be sure that no one malicious will be able to trick you into using even correctly-functioning features (e.g. through shell injection).
Sort of a special case of the principle of minimum privilege, when applied to the feature set of your tools.
Sort of a special case of the principle of minimum privilege, when applied to the feature set of your tools.