Точно так же, как описано в документах :
Вы можете заменить кнопку здесь, чтобы проверить это: https://codesandbox.io/s/m34yq5q0qx
Система также использует a fork
/exec
... комбинация. Если Вы делаете fork
/exec
самостоятельно можно выполниться параллельный рабочему процессу, в то время как system
блокируется (включает wait
). Также system
выполняет команду, не прямую, но через оболочку (который делает проблемы с битом setuid), и system
блокирует/игнорирует определенные сигналы (SIGINT, SIGCHILD, SIGQUIT).
Да, system()
выполняет команду через оболочку, в то время как exec()
выполняет команду непосредственно. Конечно, представление оболочки открывается для ошибок и использования.
Править: конечно, страница справочника обеспечивает больше детали.
system()
будет fork()
/exec()
оболочка, и затем окружает, будет fork()
/exec()
программа Вы хотите запуститься.
Так system()
вдвое более тяжело, чем fork()
/exec()
существует также popen (), который похож на систему (), но позволяет читать вывод ребенка и обеспечивать вход
система () работы над Windows, но ветвление () не делает.
Если Вы не используете слой совместимости, такой как Cygwin, но даже затем ветвление может быть очень дорогим.