Разница между ч / б exec () и system () в Unix - PullRequest
2 голосов
/ 12 сентября 2011

В чем разница между командами exec (const char * c) и system (const char * c) в системах на основе Unix?

Оба могут быть вызваны из программы на Си для выполнения системных вызовов. Есть ли разница в ч / б два?

Ответы [ 2 ]

8 голосов
/ 12 сентября 2011

exec заменяет ваш процесс указанной программой.Ваша программа завершена и не будет продолжать работать.

spawn запускает новый процесс (возможно, сначала используя fork) и запускает указанную программу, пока ваша программа продолжает выполняться.

system запускает новый процесс (возможно, сначала используя fork) и запускает указанную программу, пока ваша программа ждет.После выхода ребенка ваша программа продолжается.

1 голос
/ 12 сентября 2011

exec выполнит файл, в то время как system выполнит оболочку и передаст ее аргументами.

Из википедии:

Он (системный) отличается отсемейство функций exec / spawn, в котором вместо передачи аргументов исполняемому объекту системной оболочке передается одна строка, обычно оболочка POSIX, / bin / sh -c.

http://en.wikipedia.org/wiki/System_%28C_standard_library%29

...