问题标签 [fcntl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - O_NONBLOCK 是否被设置为文件描述符或基础文件的属性?
从我在 The Open Group 网站上阅读的内容来看,fcntl
我得到的印象是,是否在文件描述符上设置,因此非阻塞 I/O 是否与描述符一起使用,应该是该文件描述符而不是基础文件。例如,作为文件描述符的一个属性,如果我复制一个文件描述符或打开另一个描述符到同一个文件,那么我可以将阻塞 I/O 与另一个一起使用,而将非阻塞 I/O 与另一个一起使用。open
read
write
O_NONBLOCK
然而,尝试使用 FIFO,似乎不可能同时为 FIFO 提供阻塞 I/O 描述符和非阻塞 I/O 描述符(因此O_NONBLOCK
set 是否是底层文件 [the FIFO] 的属性):
这让我想:是否有可能对同一个文件有一个非阻塞 I/O 描述符和阻塞 I/O 描述符,如果是这样,它是否取决于文件的类型(常规文件、FIFO、块特殊文件、字符特殊文件、套接字等)?
python - 有助于文件锁定的实用程序 - 需要专家提示
我编写了一个文件的子类,它a)提供了方便地锁定它的方法(使用fcntl,所以它只支持unix,但这对我atm来说还可以)和b)在读取或写入时断言文件已适当锁定。
现在我不是这些东西的专家(我刚刚读过一篇关于它的论文 [de])并且希望得到一些反馈:它是否安全,是否存在竞争条件,是否还有其他可以做得更好的事情......在这里是代码:
(文档字符串中的示例也是我当前的用例)
感谢您阅读到这里,甚至可能回答:)
linux - 不间断的读/写调用
在我在 Linux 上的 C 编程冒险中的某个时刻,我遇到了标志(可能是ioctl
/ fcntl
?),它使文件描述符上的读取和写入不会中断。
不幸的是,我不记得如何做到这一点,或者我在哪里读到它。任何人都可以解释一下吗?
更新0
为了完善我的查询,我在同样的阻塞和保证之后fwrite()
提供fread()
,没有用户空间缓冲。
perl - 我可以让 fcntl 和 Perl 警报合作吗?
我在 linux、nfs 上,涉及多台机器。
我正在尝试使用 fcntl 来实现文件锁定。我一直在使用flock,直到我发现它只能在同一台机器上的进程之间工作。
现在,当我用 F_SETLKW 调用 fcntl 时,perl 警报(用于添加超时)不像以前那样工作。这通常没问题,但 ctrl-c 也不起作用。
我认为正在发生的是 fcntl 仅每 30 秒左右检查一次信号。警报最终还是会回来。ctrl-c 被抓住了,……最终。
我可以做些什么来调整 fcntl 检查这些信号的频率吗?
python - 遇到flock() 函数的问题
我有一个关于如何flock()
工作的问题,尤其是在 python 中。我有一个打开串行连接的模块(通过os.open()
)。我需要使这个线程安全。在同一个模块中使用时,使其线程安全很容易threading.Lock()
,但是如果模块从不同的地方导入,它就会中断。
我正在考虑使用flock()
,但我无法找到足够的关于羊群如何工作的信息。我读到flock() 会在文件关闭后解锁文件。但是,如果 python 崩溃,是否存在保持文件打开的情况?
LOCK_EX
如果设置了锁定文件,究竟允许使用什么?只是锁定文件的模块?从最初运行的脚本中导入的任何模块?
c - 在Linux上使用C中的open()忽略标有“%”的注释行
我正在尝试读取前两行标有“%”作为第一个字符的文件。我需要忽略这两行,然后读取 4 个单独的整数变量,由未知数量的空格分隔。然后对每一行重复此操作,直到 EOF。我正在尝试使用 fcntl.h 中的 open()。
有没有办法在 2 整行之后开始读取,然后将 4 个值与它们之间的空格分隔成 4 个整数变量?
这是一个示例文件:
c - C fcntl 抽象函数不起作用
我正在编写一个应用程序及其规范,我每次在其上写入时都需要锁定一个文件(该文件将为其他团队正在开发的其他应用程序读取):
我做了以下功能:
我可以得到 1 返回(意味着一切正常),但是当我制作测试用例时,我可以在锁定的文件中写入 Oo
测试代码是:
c - fcntl 不工作
我有一个小程序,可以在打开后更改文件访问模式。
printf("%d\n", curval); newval = curval | O_WRONLY | O_APPEND; printf("%d\n", newval);
}
这是我以文本文件作为输入运行该程序时的输出。
为什么程序中的写入失败?此外,我无法找到文件状态标志常量的定义位置。我签入了 usr/include/
constants - fcntl.h 不包含所有状态标志常量
我一直在浏览头文件,但找不到任何带有状态标志定义的文件(如 O_RDONLY)。
谢谢,约翰