Какие версии exec используются в C и C ++? - PullRequest
79 голосов
/ 24 апреля 2011

Это все версии exec, которые можно использовать в C (и C ++)

execl
execle
execlp
execv
execve
execvp

В чем разница между ними?Как вы знаете, какой использовать?

Ответы [ 3 ]

160 голосов
/ 24 апреля 2011

Различия представляют собой комбинации:

  1. L против V : хотите ли вы передать параметры в исполняемую программу как

    • L : отдельные параметры в вызове (список переменных аргументов): execl(), execle(), execlp() и execlpe()
    • V : в виде массива char * execv(), execve(), execvp() и execvpe()

    Формат массива полезен, когда число параметров, которые должны быть отправленыПроцесс exec'ed является переменным - как в заранее неизвестном, поэтому вы не можете ввести фиксированное количество параметров в вызове функции.

  2. E : версии с буквой 'e' в конце позволяют дополнительно передавать массив char *, представляющий собой набор строк, добавленных в среду порожденных процессов перед запуском исполняемой программы.Еще один способ передачи параметров, на самом деле.

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

4 голосов
/ 24 апреля 2011

Opengroup - одна из лучших общих ссылок для основных функций c / c ++.

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

0 голосов
/ 26 марта 2015

Это расширение Posix библиотеки времени исполнения C. Если официальной документации Posix недостаточно, я могу порекомендовать книгу - Сэмюэль П. Харбисон, Гай Л. Стил, 2002 г. «C A Reference», страница № 416 - охватить этот вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...