在C编程中,有没有办法在flock()上实现超时?
感谢。
#include <sys/file.h>
int flock(int fd, int operation);
答案 0 :(得分:0)
您可以使用SIG_ALARM执行此操作。 http://www.gnu.org/software/libc/manual/html_node/Setting-an-Alarm.html 这有点棘手,特别是如果你正在处理多个线程。您必须确保您的系统将sig警报传递给始终设置它的线程,并且可能不是这种情况......在这种情况下您需要使用pthread_sigmask http://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_sigmask.html 确保只有你的线程启用了信号...但是如果2个线程同时阻塞了flock怎么办?您需要为此添加某种互斥包装。