Могут ли разные процессы 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, но общий ответ на ваш вопрос будет следующим:
→ нет, все процессы на одном узле используют один и тот же файловый сервер и, следовательно, имеют один и тот же рабочий каталог для всех процессов.