- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 fchmodat() POSIX function spec我不确定以下是否正确:
#include <fcntl.h>
#include <sys/stat.h>
int chown_test(const char* path, mode_t mode, mode_t new_mode)
{
#ifdef HAVE_FCHMODAT
if (fchmodat(AT_FDCWD, path, new_mode,
AT_SYMLINK_NOFOLLOW) && errno != EOPNOTSUPP)
return 1;
#else
if (!S_ISLNK(mode) && chmod(path, new_mode))
return 1;
#endif
return 0;
}
与 mode
是st_mode
的lstat(path...)
.
换句话说,如果系统支持的话,上面的函数应该尝试设置文件或符号链接(symbolic link)的模式。如果没有,它应该优雅地返回。
因此,我正在检查 EOPNOTSUPP
POSIX 指定的错误:
[EOPNOTSUPP]
The AT_SYMLINK_NOFOLLOW bit is set in the flag argument, path names a symbolic link, and the system does not support changing the mode of a symbolic link.
但是,我有点担心
EINVAL
指定为:[EINVAL]
The value of the flag argument is invalid.
理论上,如果特定文件系统不支持设置符号链接(symbolic link)的模式位,我认为它实际上可以处理
AT_SYMLINK_NOFOLLOW
作为无效标志。另一方面,
EOPNOTSUPP
错误描述和标志的描述方式:Values for flag are constructed by a bitwise-inclusive OR of flags from the following list, defined in :
AT_SYMLINK_NOFOLLOW
If path names a symbolic link, then the mode of the symbolic link is changed.
让我认为这个标志应该始终被兼容的实现视为有效。
我是否正确,或者我应该回退到
<小时/>chmod()
如果是EINVAL
?编辑:作为注释,我刚刚发现 Linux 返回
ENOTSUP
(与EOPNOTSUPP
具有相同的值)每当AT_SYMLINK_NOFOLLOW
时被使用,即使路径没有命名符号链接(symbolic link)。
最佳答案
相关文本是 XSH 2.3 错误号:
Implementations may support additional errors not included in this list, may generate errors included in this list under circumstances other than those described here, or may contain extensions or limitations that prevent some errors from occurring.
起初这似乎允许所描述的行为。不过我相信下面的文字:
Implementations may generate error numbers listed here under circumstances other than those described, if and only if all those error conditions can always be treated identically to the error conditions as described in this volume of POSIX.1-2008. Implementations shall not generate a different error number from one required by this volume of POSIX.1-2008 for an error condition described in this volume of POSIX.1-2008, but may generate additional errors unless explicitly disallowed for a particular function.
呈现一个给出 EINVAL
的实现,表示此条件不符合要求。 POSIX 指定 EOPNOTSUPP
作为此条件的错误代码,因此实现“不应”(这是规范要求)为其生成不同的错误代码。
来源:http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_03
关于AT_SYMLINK_NOFOLLOW 会导致 fchmodat() 出现 EINVAL 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12396615/
我在极少数情况下看到 pthread_cond_timedwait() 返回 EINVAL 并导致我们的系统发生致命崩溃。我知道这意味着传入的参数之一必须无效,但是 mutex 或 cond 变量如何
我正在尝试使用 aio_write(1) 函数。下面的代码是我的程序。但是,aio_write() 总是返回 EINVAL。 看了EINVAL的错误原因:aio_offset、aio_reqprio、
我们正在从 ARM 嵌入式 Ubuntu 14.04 更新到 ARM 嵌入式 Ubuntu 16.04。在第一个平台上,我们可以毫无问题地访问使用 SPIDEV 的芯片。在 Ubuntu 平台上,我在
我有以下两个功能: static int MessAttrManager_inotifyUnregister(MessPropertyManager* base, int wd){ MessAtt
我正在尝试弄清楚如何正确使用 tee。在我的应用程序中,tee 出于某种原因总是返回 EINVAL。我感到绝望,并尝试运行 tee 手册页中列出的示例应用程序(例如:https://linux.die
我无法使 mmap 函数工作。它返回 EINVAL 错误代码。 void* mapped = mmap((void*)(map_addr + slide),
我正在尝试调试一个问题,但我不明白。 func BackgroundProcess(lpCommandLine string) (error) { var lpProcessAttrs win
我正在使用为以下问题提供的代码 numa+mbind+segfault ,每次调用 mbind 都会返回 EINVAL。我怎样才能得到什么是完全错误的?我问这个是因为有很多原因可以返回 EINVAL。
我正在尝试在 C 中发送一个 UDP 数据包。我有以下 sendto(): char* msg = "Hello"; //ret is the return value of getaddrinfo,
我正在尝试下载一个 ~2GB 的文件并将其写入本地文件,但我遇到了这个问题: 这是适用的代码: File.open(local_file, "wb") do |tempfile| puts
我在闪存驱动器 E 上使用 Node v11.5 和 npm 6.4.1,在 win 7 上,我正在尝试安装最新的 netlify cli。关注 https://cli.netlify.com/get
我是新人,我有一个问题。在android中,我无法通过TCP套接字连接任何远程地址。当我尝试连接时,调试器显示错误: Exception: failed to connect to /23.20.47
我修改了this C数据报(UDP)套接字客户端示例: #include #include #include #include #include #include #include #i
我有一个 C-ZMQ 客户端,它接收两个随机端口(来自 pyzmq 服务器),然后连接到它们。 通常情况下,一切正常,但有时第二次连接会失败,errno 设置为 EINVAL。 (即使我在连接调用之间
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试使用 setsockopt 函数将地址添加到接口(interface)的多播地址列表中,但失败并显示错误号 EINVAL。我在内核代码中放置了一些 printk,看起来 errno 最终是在
我正在尝试绑定(bind)服务器套接字,以便我可以接收和监听来自其他客户端的传入消息。但我无法绑定(bind),它返回错误 - EINVAL(无效参数)。我已经完成了之前提出的与此错误相关的问题,Li
我正在尝试对 IO 密集型代码使用预取提示。我根据我对 gpfs_fcntl() 手册页的理解设置了代码,但确实得到了一个 EINVAL。我现在有点迷茫,我做错了什么 - 任何提示表示赞赏。 挂载
我想用以下格式的文件名创建一个文件:DAY-MONTH-YEAR--HOUR:MINUTE 但是当我使用 -- 或/and : 我遇到了 open failed: EINVAL 异常。我试图摆脱这些焦
几个小时以来我一直遇到 shmget 的问题,现在我似乎无法弄清楚。每次我尝试调用 shmget() 时,它总是返回 EINVAL: "Invalid Argument"错误。 代码的重要部分如下:
我是一名优秀的程序员,十分优秀!