Які різні версії exec використовуються для C та C ++?


91

Це всі версії exec, які можна використовувати на C (і C ++)

execl
execle
execlp
execv
execve
execvp

Яка різниця між ними? Як ви знаєте, який із них використовувати?

Відповіді:


181

Відмінності полягають у поєднанні:

  1. L проти V : чи потрібно передавати параметри виконуваній програмі як

    • L : окремі параметри у виклику (змінний список аргументів): execl(), execle(), execlp(), іexeclpe()
    • В : як масив символ * execv(), execve(), execvp(), іexecvpe()

    Формат масиву корисний, коли кількість параметрів, які потрібно надіслати виконуваному процесу, є змінною - як і невідомо заздалегідь, тому ви не можете ввести фіксовану кількість параметрів у виклику функції.

  2. E : Версії з позначкою "e" дозволяють додатково передавати масив char *, який являє собою набір рядків, доданих до оточуючого середовища процесів перед запуском програми exec'ed. Ще один спосіб передачі параметрів, насправді.

  3. P : Версії з 'p' там використовують змінну середовища PATH для пошуку виконуваного файлу з іменем для виконання. Версії без 'p' вимагають додавання абсолютного або відносного шляху до імені файлу виконуваного файлу, якщо його немає в поточному робочому каталозі.


1
Найкраще пояснення, яке я бачив досі. Це майже так само коротко, як офіційна документація / посилання, проте воно в тисячу разів виразніше, інформативніше та зрозуміліше. Дякую.
Akito

5

Opengroup - одне з найкращих загальних посилань на основні функції c / c ++.

Документи для exec * знаходяться тут: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html


2
це насправді не відповідає на питання і є лише посиланням.
Жан-Франсуа Фабр

До приїзду сюди я прочитав документацію на веб-сайті, але це не дуже допомогло. Пояснення дуже короткі, хоча вони повинні бути детальними. Крім того, важко знайти правильне пояснення того, що ви шукаєте, якщо ви шукаєте з нуля.
Akito

-4

Це розширення Posix бібліотеки середовища виконання C. Якщо офіційної документації Posix недостатньо, тоді я можу рекомендувати книгу - Семюель П. Харбісон, Гай Л. Стіле, 2002 "Довідковий центр CA" Сторінка № 416 - висвітлюйте це питання.


2
Хоча це посилання може відповісти на питання, краще включити сюди основні частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться. - З огляду
31пій

Посилання були на Amazon та posxis standart, щоб бути корисними для читача. Гаразд, я видалив посилання, як ви просили, навіть я не згоден з тим, що це краще. Видаліть свій donwvote, якщо зараз він є більш читабельним.
bruziuz

1
Я не проголосував за вашу відповідь. Я щойно отримав відгук на вашу відповідь, яку, на мою думку, було неякісною. Я не хотів видаляти посилання. Сенс тут полягає у включенні відповідних уривків із посилання, які допомагають майбутнім читачам миттєво зрозуміти відповідь. Просто розміщення посилань у відповіді нікому не допомагає.
31пий,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.