如果您查看用于在此类系统上实现 getcwd(3)
的UNIX 手册页
file:get_cwd/0
,您会发现以下对 ENOENT
错误结果的解释:
ENOENT 当前工作目录已取消链接。
换句话说,如果当前工作目录已从Erlang进程下删除,就会出现此错误。
enoent
模块的 文档中存在许多类似的
file
解释。
尝试从
erl
shell 执行以下调用序列,假设您的系统上尚不存在目录 /tmp/foo
:
1> file:make_dir("/tmp/foo").
ok
2> cd("/tmp/foo").
/tmp/foo
ok
3> file:get_cwd().
{ok,"/tmp/foo"}
4> file:del_dir("/tmp/foo").
ok
5> file:get_cwd().
{error,enoent}
此序列首先创建新目录
/tmp/foo
并将 erl
进程的工作目录更改为该目录。第一次调用 file:get_cwd()
会验证 /tmp/foo
是否如预期的那样是工作目录。然后通过调用 file:del_dir/1
删除目录。由于工作目录现在不再存在,因此第二次调用 file:get_cwd()
返回 {error,enoent}
。