Каковы различные версии exec, используемые для C и С++?

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

execl
execle
execlp
execv
execve
execvp

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

Ответ 1

Различия - это комбинации:

  • L vs V: хотите ли вы передать параметры в программу exec'ed как

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

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

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

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

Ответ 3

Это расширение Posix библиотеки времени выполнения C. Если официальной документации Posix недостаточно, то я могу рекомендовать книгу - Samuel P. Harbison, Guy L.Steele, 2002 "C A Reference" Страница № 416 - рассмотрим этот вопрос.