C:如何在flock上添加超时?

C:如何在flock上添加超时?,c,flock,C,Flock,在C编程中,有没有一种方法可以在flock()上实现超时 谢谢 #include <sys/file.h> int flock(int fd, int operation); #包括 int flock(int fd,int操作); 您可以使用SIG_报警来执行此操作。 但这有点棘手,特别是当您处理多个线程时。您必须确保您的系统将sig警报发送到始终设置它的线程,但情况可能并非如此。。。在这种情况下,您需要使用pthread_sigmask 要确保只有线程启用了信号。。。但是如果

在C编程中,有没有一种方法可以在flock()上实现超时

谢谢

#include <sys/file.h>

int flock(int fd, int operation);
#包括
int flock(int fd,int操作);

您可以使用SIG_报警来执行此操作。 但这有点棘手,特别是当您处理多个线程时。您必须确保您的系统将sig警报发送到始终设置它的线程,但情况可能并非如此。。。在这种情况下,您需要使用pthread_sigmask
要确保只有线程启用了信号。。。但是如果两个线程同时阻塞在flock上会怎么样?您需要为此添加某种互斥对象包装。

没有超时支持,只有。如果在等待锁定时需要超时,则需要用信号中断锁定操作。python版本是指调用函数时超时,还是指一段时间后自动解锁文件的超时?您可以使用
alarm
setitimer
在一定时间后中断自己。谢谢,目前我将采用锁定方法。锁定方法的问题是,您获得锁定的延迟等于您的睡眠时间,这是很难接受的。请注意,“在任何给定时间,每种类型只能设置一个计时器”。这意味着代码模块不能只设置报警。必须有一个流程范围的管理器,可以协调所有SIGALRM客户端。例如: