В статье, на которую вы ссылаетесь, в основном говорится о проблемах, если вы выполняете fork () и не сразу выполняете за ним команду exec * (). Поскольку system () обычно реализуется с помощью fork (), за которым следует exec (), большинство проблем не применимы. Одна проблема, которая действительно применима, это вопрос закрытия файловых дескрипторов; Если у вас нет особых причин поступать иначе, открытие файлов с помощью O_CLOEXEC по умолчанию, вероятно, является хорошим практическим правилом.
Одна проблема с fork () + exec () для приложений, занимающих большие объемы памяти, заключается в том, что если ваша ОС настроена так, чтобы не допускать переполнение памяти, fork () может завершиться ошибкой. Одним из решений этой проблемы является разветвление процесса «внешнего обработчика процесса» перед тем, как вы начнете выделять много памяти в вашем основном процессе.
Лучшее решение - это если требуемая функциональность доступна в виде библиотеки, избавляя от необходимости в первую очередь создавать ответвления. Это, вероятно, не согревает ваше сердце в краткосрочной перспективе, однако.