Для чего обычно используют переменную envp/environ в Си коде?
Вот не могу придумать для себя сценарий использования данной переменной. Наткнулся на такую штуку https://opensource.apple.com/source/OpenSSH/OpenSSH-209/openssh/openbsd-compat/setproctitle.c.auto.html Хочу разобраться в сценариях использования. Вот зачем обычно используют setproctitle и environ, вроде как чем-то взаимосвязанные вещи.
Т.е, подытожим: Есть третий аргумент в int main(char* envp[]) Есть extern char **environ в чем между ними разница, каков сценарий использования, почему именно extern char **environ используют в коде по ссылке
Ответы (1 шт):
Т.е, подытожим: Есть третий аргумент в int main(char* envp[]) Есть extern char **environ в чем между ними разница, каков сценарий использования, почему именно extern char **environ используют в коде по ссылке
Практической разницы, как таковой, нет.
С прикладной точки зрения «envp» доступен только как аргумент main(), а environ в любой точке программы.
С точки зрения стандартов:
- Для доступа к переменным окружения Си определяет только
getenv(). - POSIX определяет
environ - «
envp» — ни как не стандартизирован, но широко распространён на разных системах.
Из всего этого я бы сделал заключение, что «envp» — это историческое наследие, которое попросту не стоит использовать в новых переносимых программах.