34得票5回答
如何使用Python获取硬盘序列号

我该如何在Linux上使用Python获取硬盘驱动器的序列号? 我想使用Python模块来完成这个任务,而不是运行外部程序(例如hdparm)。也许可以使用fcntl模块?

26得票7回答
Python的fcntl无法按预期锁定

在基于Debian的操作系统(Ubuntu,Debian Squeeze)上,我正在使用Python(2.7,3.2)中的fcntl来锁定文件。根据我所了解的内容,fnctl.flock以一种方式锁定文件,如果另一个客户端想要锁定同一文件,则会引发异常。 我建立了一个小例子,我希望它能抛出异...

24得票1回答
O_NONBLOCK是设置在文件描述符还是底层文件上的属性?

根据我在The Open Group网站上阅读fcntl、open、read和write的内容,我的印象是无论是否在文件描述符上设置了O_NONBLOCK,也就是使用了非阻塞I/O,这应该是文件描述符的属性而不是底层文件的属性。作为文件描述符的属性意味着,例如,如果我复制一个文件描述符或打开另...

18得票1回答
Python的lockf和flock行为

我看过足够多关于flock/lockf/fcntl之间区别的stackoverflow帖子,但我无法回答以下观察问题:>>> import fcntl >>> a = open('/tmp/locktest', 'w') >>> b = o...

16得票2回答
将一个接收套接字设置为非阻塞模式是否可行(且安全)?

我正在寻找一种打断阻塞套接字上的 accept() 调用的方法。使用信号不是一个选项,因为这是一个库,我不想混淆用户信号。使用 select() 是另一种选择,但由于各种原因,在我的情况下并不是很有吸引力。 如果可能的话,一个好的解决方案是在另一个线程中将套接字设置为非阻塞模式(使用 fcn...

15得票2回答
如何强制链接到旧版的libc `fcntl`而不是`fcntl64`?

看起来GLIBC 2.28 (于2018年8月发布)对fcntl做出了相当激进的更改。在<fcntl.h>中,定义已更改为不再是外部函数,而是一个到fcntl64的#define。 结果是,如果您在使用此glibc的系统上编译代码--如果它使用fcntl() 任何时候--生成的二...

14得票3回答
如何在Linux中原子地创建一个锁定的文件?

场景:我有许多需要从网络上获取文件的进程。如果文件已经下载,我希望将它缓存在磁盘上。如果另一个进程正在下载该文件,则阻塞直到下载完成。 我一直在尝试找到最简单的方法来实现这一点。显而易见的方法是: create file w/ an exclusive lock active on it ...

12得票1回答
在Python中将标准输出设置为非阻塞

先警告一下:出于好奇目的,我在这里进行了一些黑客活动。我没有具体的原因去做下面的事情! 以下是在MacOS 10.12.5上使用Python 2.7.13完成的 我正在使用python进行黑客活动,我想知道如果我使stdout无阻塞会发生什么有趣的事情。fcntl.fcntl(sys.st...

12得票3回答
open()函数没有设置O_CLOEXEC标志

我试图使用open()设置O_CLOEXEC标志,但没有成功。考虑以下微型测试:#include <stdio.h> #include <fcntl.h> int main() { int fd = open("test.c", O_RDONLY | O_CLOE...

12得票1回答
如何使用File#flock进行非阻塞请求独占锁?

如何请求非阻塞锁? 当单独尝试锁定文件时,为什么Ruby的File#flock无法像预期那样工作? 在块中锁定文件不是解决此问题的正确方法,因为要展示的是对持久性锁定的行为。在块内使用File#flock会在块退出时释放锁,因此不能正确地展示问题。 在请求非阻塞锁时,File#flock会...