Различие между использованием fork/execvp и системным вызовом

Точно так же, как описано в документах :


Вы можете заменить кнопку здесь, чтобы проверить это: https://codesandbox.io/s/m34yq5q0qx

13
задан foo 20 November 2008 в 09:37
поделиться

5 ответов

Система также использует a fork/exec... комбинация. Если Вы делаете fork/exec самостоятельно можно выполниться параллельный рабочему процессу, в то время как system блокируется (включает wait). Также system выполняет команду, не прямую, но через оболочку (который делает проблемы с битом setuid), и system блокирует/игнорирует определенные сигналы (SIGINT, SIGCHILD, SIGQUIT).

14
ответ дан 1 December 2019 в 20:02
поделиться

Да, system() выполняет команду через оболочку, в то время как exec() выполняет команду непосредственно. Конечно, представление оболочки открывается для ошибок и использования.

Править: конечно, страница справочника обеспечивает больше детали.

7
ответ дан 1 December 2019 в 20:02
поделиться

system() будет fork()/exec() оболочка, и затем окружает, будет fork()/exec() программа Вы хотите запуститься.

Так system() вдвое более тяжело, чем fork()/exec()

6
ответ дан 1 December 2019 в 20:02
поделиться

существует также popen (), который похож на систему (), но позволяет читать вывод ребенка и обеспечивать вход

2
ответ дан 1 December 2019 в 20:02
поделиться

система () работы над Windows, но ветвление () не делает.

Если Вы не используете слой совместимости, такой как Cygwin, но даже затем ветвление может быть очень дорогим.

3
ответ дан 1 December 2019 в 20:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: