Там, как представляется, два распространенных способа запуска исполнимый из C в UNIX, вызовв систему() или fork()/exec()?
system()
и
pid = fork()
switch(pid)
//switch statement based on return value of pid,
//one branch of which will include and exec() command
Есть ли основания предпочесть вилки/Exec над системой в в случае, когда они функционально эквивалентны (родительский процесс ждет завершения работы дочернего элемента, никакой сложной информации не возвращается от ребенка) ?.
Я спросил у своего профессора, в чем разница, и он сказал, что 'system()' является API для ОС, а 'fork/exec' - это вызовы системного уровня. Это правда? Я понимаю, что API для ОС более безопасны в том смысле, что они могут содержать дополнительную проверку, а не системные вызовы. – Celeritas
@Celeritas В некотором смысле (системные вызовы также являются API-интерфейсами ОС), но ваш вывод ложный, как я утверждал в ответе. 'system' не добавляет проверки; он добавляет неконтролируемую функциональность. –