В чем разница между использованием execle и putenv, за которыми следует execl? - PullRequest
0 голосов
/ 14 мая 2018

Скажите, я putenv переменная среды ABC, а затем выполните execl, или я сделаю execle и добавлю ABC в массив envp указателей, которые я передаю execle.

Есть ли разница, если есть?

1 Ответ

0 голосов
/ 14 мая 2018

putenv добавляет переменную среды в текущую среду. Использование execl будет использовать эту среду.

execle будет использовать аргумент среды в качестве всей среды, т. Е. Он не будет наследовать существующие переменные среды.

Это легко увидеть с помощью простой программы, которая просто запускает env (которая выводит текущую среду):

#include <unistd.h>

int main()
{
    execl("/bin/env", "/bin/env", NULL);
}

При запуске этого на моих машинах выводятся многие переменные окружения, такие как HOME и т. Д.

#include <unistd.h>

int main()
{
    char* env[] = { NULL };
    execle("/bin/env", "/bin/env", NULL, env);
}

Это ничего не печатает, потому что среда пуста.

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