Size: a a a

2021 May 01

Dv

Dr. Friedrich von Ne... in codingteam
А я даже вспомнил, зачем мне был нужен setenv.
источник

Dv

Dr. Friedrich von Ne... in codingteam
У меня есть функции, которые зависят от getenv, и хотелось его переопределять во время выполнения тестов. Запускать на каждый тест кейс отдельный процесс — неоправданно жирно.
источник

Dv

Dr. Friedrich von Ne... in codingteam
У себя локально я в итоге действительно просто задал глобальную мапу, в которой можно было переопределить env во время тестов, и проблема разрешилась.
источник

💮

💮 in codingteam
Ладно.
источник

Dv

Dr. Friedrich von Ne... in codingteam
А, по идее, в Линуксе может хотеться поменять LD_LIBRARY_PATH, например?
источник

Dv

Dr. Friedrich von Ne... in codingteam
Или там есть норм способы это контролировать в dlopen, не трогая окружение?
источник

💮

💮 in codingteam
https://linux.die.net/man/3/dlopen

> If, at the time that the program was started, the environment variable LD_LIBRARY_PATH was defined to contain a colon-separated list of directories, then these are searched.

> at the time that the program was started

Похоже, вообще getenv не юзается.
источник

💮

💮 in codingteam
Но надо проверить.
источник

Dv

Dr. Friedrich von Ne... in codingteam
Ага, то есть оно один раз читает во время старта, и динамически в рантайме не меняется? Интересно.
источник

💮

💮 in codingteam
(gdb) p environ
'environ' has unknown type; cast it to its declared type
(gdb) p (char**)environ
$1 = (char **) 0x7fffffea80
(gdb) p ((char**)environ)[2]
$2 = 0x7fffffed67 "COLORTERM=truecolor"
(gdb) p ((char**)environ)@6
Only values in memory can be extended with '@'.
источник

💮

💮 in codingteam
Как в gdb массив этот массив строк вывести?
источник

FO

FORTRAN ONE LOVE in codingteam
@fvnever, по поводу env в execve:
Твоё приложение может запуститься с системным енвом, но дальше можно собрать свой енв и все дети твоего процесса будут с другим енвом. И если ребенок будет искать что-либо, то он будет использовать твой РАТН, а не системный.
ЛД_ЛИБР_РАТН можно, и даже нужно иногда, менять :3
А контролировать можно маскируя нужные функции и говоря, где конкретно искать.

И... Утро v0.2.0-20210501!
источник

Dv

Dr. Friedrich von Ne... in codingteam
Замаскируйте setenv, чтоб нормально работало.
источник

FO

FORTRAN ONE LOVE in codingteam
Эм. А зачем, если можно юзать свой собственный env?
источник

Dv

Dr. Friedrich von Ne... in codingteam
Кому можно?
источник

FO

FORTRAN ONE LOVE in codingteam
Детям можно!
источник

Dv

Dr. Friedrich von Ne... in codingteam
Вот gettext зависит от env. Ты его перепишешь?
источник

FO

FORTRAN ONE LOVE in codingteam
Родителям нельзя :)
источник

Dv

Dr. Friedrich von Ne... in codingteam
Сейчас история такая, что, вовремя вызвав setenv, его можно разъебать.
источник

Dv

Dr. Friedrich von Ne... in codingteam
А я не хочу, чтобы разъебло (ну вот представим такую ситуацию).
источник