Могут ли разные процессы Erlang иметь независимые рабочие каталоги?

Любая модификация процесса cwd является глобальным:

iex(1)> File.cwd
{:ok, "/home/hentioe"}
iex(2)> spawn fn -> File.cd("/home")  end
#PID<0.105.0>
iex(3)> File.cwd                         
{:ok, "/home"}

Есть ли способ изолировать текущий рабочий каталог (cwdа) между процессами?

1 ответ

В ErlangVM есть концепция файлового сервера и оригинал :file.set_cwd/1, File.cwd/1 делегаты, явно сделанные для установки рабочего каталога файлового сервера.

Файловый сервер на другом узле всегда отличается, также есть несколько функций, которые можно вызвать, чтобы обойти файловый сервер (grep :file документация для "файлового сервера".)

Неясно, зачем вам нужен другой текущий каталог для другого процесса, и все это пахнет проблемой XY, но общий ответ на ваш вопрос будет следующим:

→ нет, все процессы на одном узле используют один и тот же файловый сервер и, следовательно, имеют один и тот же рабочий каталог для всех процессов.

Другие вопросы по тегам