EACCES 和 EPERM 之间的区别
Difference between EACCES and EPERM
EACCES和EPERM到底有什么区别? EPERM 被描述为 here 为 "not super user",但我通常会将其与 EACCES 联系起来。事实上,我不记得在现实生活中见过 EPERM。
EACCES
几乎总是在系统调用传递给当前用户无法访问的路径时使用。
EPERM
用于需要成为 root 用户才能执行操作的各种其他情况,例如
kill()
在您不拥有的进程上
link()
在目录上
reboot()
Linux capabilities(7)
figure into execve(2)
这样如果执行过程缺少正确的 inheritance/bounding-set/ambient 来设置文件功能:
"If the process did not obtain the full set of file permitted capabilities, then execve(2) fails with the error EPERM."
EACCES和EPERM到底有什么区别? EPERM 被描述为 here 为 "not super user",但我通常会将其与 EACCES 联系起来。事实上,我不记得在现实生活中见过 EPERM。
EACCES
几乎总是在系统调用传递给当前用户无法访问的路径时使用。
EPERM
用于需要成为 root 用户才能执行操作的各种其他情况,例如
kill()
在您不拥有的进程上link()
在目录上reboot()
Linux capabilities(7)
figure into execve(2)
这样如果执行过程缺少正确的 inheritance/bounding-set/ambient 来设置文件功能:
"If the process did not obtain the full set of file permitted capabilities, then execve(2) fails with the error EPERM."