在 Erlang 中,不同的进程可以有独立的工作目录。每个进程都有自己的进程标识符(PID),它可以用于唯一地标识一个进程。
要在不同的进程中设置独立的工作目录,可以使用 file:set_cwd/1
函数。这个函数可以将当前进程的工作目录更改为指定的目录。
下面是一个示例代码,演示了如何在不同的 Erlang 进程中设置独立的工作目录:
-module(directory_example).
-export([start/0, worker/1]).
start() ->
% 启动一个工作进程
Pid = spawn(directory_example, worker, [self()]),
% 更改工作进程的工作目录
file:set_cwd("/path/to/directory"),
% 向工作进程发送消息
Pid ! hello,
receive
Message -> io:format("Received message: ~p~n", [Message])
end.
worker(Parent) ->
% 获取当前工作进程的工作目录
CurrentDir = file:get_cwd(),
% 向父进程发送当前工作目录
Parent ! {self(), CurrentDir},
receive
hello -> io:format("Hello from worker process!~n")
end.
在这个例子中,start/0
函数启动一个工作进程,并将当前进程的 PID 作为参数传递给 worker/1
函数。然后,它使用 file:set_cwd/1
函数将工作进程的工作目录更改为指定的目录。接下来,它向工作进程发送一个消息,并等待工作进程的响应。工作进程在收到消息后会向父进程发送它的当前工作目录,并输出一条消息。
可以通过调用 directory_example:start()
来运行这个示例。运行结果将会显示父进程和工作进程的工作目录,并输出一条消息。