Це всі версії exec, які можна використовувати на C (і C ++)
execl
execle
execlp
execv
execve
execvp
Яка різниця між ними? Як ви знаєте, який із них використовувати?
Це всі версії exec, які можна використовувати на C (і C ++)
execl
execle
execlp
execv
execve
execvp
Яка різниця між ними? Як ви знаєте, який із них використовувати?
Відповіді:
Відмінності полягають у поєднанні:
L проти V : чи потрібно передавати параметри виконуваній програмі як
execl()
, execle()
, execlp()
, іexeclpe()
execv()
, execve()
, execvp()
, іexecvpe()
Формат масиву корисний, коли кількість параметрів, які потрібно надіслати виконуваному процесу, є змінною - як і невідомо заздалегідь, тому ви не можете ввести фіксовану кількість параметрів у виклику функції.
E : Версії з позначкою "e" дозволяють додатково передавати масив char *, який являє собою набір рядків, доданих до оточуючого середовища процесів перед запуском програми exec'ed. Ще один спосіб передачі параметрів, насправді.
P : Версії з 'p' там використовують змінну середовища PATH
для пошуку виконуваного файлу з іменем для виконання. Версії без 'p' вимагають додавання абсолютного або відносного шляху до імені файлу виконуваного файлу, якщо його немає в поточному робочому каталозі.
Opengroup - одне з найкращих загальних посилань на основні функції c / c ++.
Документи для exec * знаходяться тут: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
Це розширення Posix бібліотеки середовища виконання C. Якщо офіційної документації Posix недостатньо, тоді я можу рекомендувати книгу - Семюель П. Харбісон, Гай Л. Стіле, 2002 "Довідковий центр CA" Сторінка № 416 - висвітлюйте це питання.