erlang - 为 file:get_cwd() 获取 {error, enoent} 的常见原因是什么?
问题描述
我正在使用file:get_cwd()
并且我看到它的错误,即{error, enoent}
. 导致此错误的潜在问题可能是什么?
解决方案
如果您查看用于在此类系统上实现的UNIX 手册页getcwd(3)
,您会发现对错误结果file:get_cwd/0
的以下解释:ENOENT
ENOENT 当前工作目录已取消链接。
换句话说,如果当前工作目录已从 Erlang 进程下删除,则会发生此错误。该模块的文档enoent
中存在许多类似的解释。file
erl
假设/tmp/foo
您的系统上尚不存在该目录,请尝试从 shell 执行以下调用序列:
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}
.
推荐阅读
- c# - 使很长的 switch 语句更具可读性
- javascript - 在每个浏览器中以相同的方式操作
- azure-active-directory - OWIN 身份验证 cookie 是否容易受到攻击?
- python-3.x - 递归冰雹序列(Python 3.x)返回一个平面列表
- ios - UIImageView 中的 Swift 4 UIButton 操作不起作用
- python - How to finish the code using recursion?
- php - 在 Silverstripe 4 中,GridField 的标准“添加”按钮什么也不做
- javascript - 同时使用 Onkeyup 和 Onchange
- c - 将用户输入写入文件,然后读取它
- google-apps-script - 通过 Apps 脚本读取汇总 Google 财经数据结果的单元格的值