Разница между использованием fork/execvp и системным вызовом
В чем разница между использованием system() для выполнения двоичного кода и использованием комбинации fork/execvp.
Есть ли разница в безопасности/пропускной способности/производительности.
Ответ 1
Система также использует комбинацию fork/exec.... Если вы выполняете fork/exec самостоятельно, вы можете выполнить параллель с выполняемым процессом, тогда как system блокирует (включает wait).
Кроме того, system выполняет команду не напрямую, а через оболочку (что создает проблемы с битом setuid) и system блокирует/игнорирует определенные сигналы (SIGINT, SIGCHILD, SIGQUIT).
Ответ 2
Да, system() запускает команду через оболочку, а exec() запускает команду напрямую. Конечно, введение оболочки открывается для ошибок и эксплойтов.