问题标签 [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.

0 投票
1 回答
27742 浏览

c - O_NONBLOCK 是否被设置为文件描述符或基础文件的属性?

从我在 The Open Group 网站上阅读的内容来看,fcntl我得到的印象是,是否在文件描述符上设置,因此非阻塞 I/O 是否与描述符一起使用,应该是该文件描述符而不是基础文件。例如,作为文件描述符的一个属性,如果我复制一个文件描述符或打开另一个描述符到同一个文件,那么我可以将阻塞 I/O 与另一个一起使用,而将非阻塞 I/O 与另一个一起使用。openreadwriteO_NONBLOCK

然而,尝试使用 FIFO,似乎不可能同时为 FIFO 提供阻塞 I/O 描述符和非阻塞 I/O 描述符(因此O_NONBLOCKset 是否是底层文件 [the FIFO] 的属性):

这让我想:是否有可能对同一个文件有一个非阻塞 I/O 描述符和阻塞 I/O 描述符,如果是这样,它是否取决于文件的类型(常规文件、FIFO、块特殊文件、字符特殊文件、套接字等)?

0 投票
1 回答
356 浏览

python - 有助于文件锁定的实用程序 - 需要专家提示

我编写了一个文件的子类,它a)提供了方便地锁定它的方法(使用fcntl,所以它只支持unix,但这对我atm来说还可以)和b)在读取或写入时断言文件已适当锁定。

现在我不是这些东西的专家(我刚刚读过一篇关于它的论文 [de])并且希望得到一些反馈:它是否安全,是否存在竞争条件,是否还有其他可以做得更好的事情......在这里是代码:

(文档字符串中的示例也是我当前的用例)

感谢您阅读到这里,甚至可能回答:)

0 投票
2 回答
465 浏览

linux - 不间断的读/写调用

在我在 Linux 上的 C 编程冒险中的某个时刻,我遇到了标志(可能是ioctl/ fcntl?),它使文件描述符上的读取和写入不会中断。

不幸的是,我不记得如何做到这一点,或者我在哪里读到它。任何人都可以解释一下吗?

更新0

为了完善我的查询,我在同样的阻塞和保证之后fwrite()提供fread(),没有用户空间缓冲。

0 投票
1 回答
461 浏览

perl - 我可以让 fcntl 和 Perl 警报合作吗?

我在 linux、nfs 上,涉及多台机器。

我正在尝试使用 fcntl 来实现文件锁定。我一直在使用flock,直到我发现它只能在同一台机器上的进程之间工作。

现在,当我用 F_SETLKW 调用 fcntl 时,perl 警报(用于添加超时)不像以前那样工作。这通常没问题,但 ctrl-c 也不起作用。

我认为正在发生的是 fcntl 仅每 30 秒左右检查一次信号。警报最终还是会回来。ctrl-c 被抓住了,……最终。

我可以做些什么来调整 fcntl 检查这些信号的频率吗?

0 投票
1 回答
7310 浏览

python - 遇到flock() 函数的问题

我有一个关于如何flock()工作的问题,尤其是在 python 中。我有一个打开串行连接的模块(通过os.open())。我需要使这个线程安全。在同一个模块中使用时,使其线程安全很容易threading.Lock(),但是如果模块从不同的地方导入,它就会中断。

我正在考虑使用flock(),但我无法找到足够的关于羊群如何工作的信息。我读到flock() 会在文件关闭后解锁文件。但是,如果 python 崩溃,是否存在保持文件打开的情况?

LOCK_EX如果设置了锁定文件,究竟允许使用什么?只是锁定文件的模块?从最初运行的脚本中导入的任何模块?

0 投票
1 回答
177 浏览

c - 在Linux上使用C中的open()忽略标有“%”的注释行

我正在尝试读取前两行标有“%”作为第一个字符的文件。我需要忽略这两行,然后读取 4 个单独的整数变量,由未知数量的空格分隔。然后对每一行重复此操作,直到 EOF。我正在尝试使用 fcntl.h 中的 open()。

有没有办法在 2 整行之后开始读取,然后将 4 个值与它们之间的空格分隔成 4 个整数变量?

这是一个示例文件:

0 投票
4 回答
32347 浏览

python - 如何使用 Python 获取硬盘序列号

如何获得使用onserial numberhard disk驱动器?PythonLinux

我想使用 Python 模块来执行此操作,而不是运行外部程序,例如hdparm. 也许使用fcntl模块?

0 投票
3 回答
858 浏览

c - C fcntl 抽象函数不起作用

我正在编写一个应用程序及其规范,我每次在其上写入时都需要锁定一个文件(该文件将为其他团队正在开发的其他应用程序读取):

我做了以下功能:

我可以得到 1 返回(意味着一切正常),但是当我制作测试用例时,我可以在锁定的文件中写入 Oo

测试代码是:

0 投票
2 回答
1833 浏览

c - fcntl 不工作

我有一个小程序,可以在打开后更改文件访问模式。

printf("%d\n", curval); newval = curval | O_WRONLY | O_APPEND; printf("%d\n", newval);

}

这是我以文本文件作为输入运行该程序时的输出。

为什么程序中的写入失败?此外,我无法找到文件状态标志常量的定义位置。我签入了 usr/include/

0 投票
1 回答
1318 浏览

constants - fcntl.h 不包含所有状态标志常量

我一直在浏览头文件,但找不到任何带有状态标志定义的文件(如 O_RDONLY)。

谢谢,约翰