Для чего обычно используют переменную 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 шт):

Автор решения: Fat-Zer

Т.е, подытожим: Есть третий аргумент в int main(char* envp[]) Есть extern char **environ в чем между ними разница, каков сценарий использования, почему именно extern char **environ используют в коде по ссылке

Практической разницы, как таковой, нет.

С прикладной точки зрения «envp» доступен только как аргумент main(), а environ в любой точке программы.

С точки зрения стандартов:

  • Для доступа к переменным окружения Си определяет только getenv().
  • POSIX определяет environ
  • «envp» — ни как не стандартизирован, но широко распространён на разных системах.

Из всего этого я бы сделал заключение, что «envp» — это историческое наследие, которое попросту не стоит использовать в новых переносимых программах.

→ Ссылка