Articles of locking

lockingLinux串行端口

我有一个问题,我正试图解决在Linux中的串行端口。 我可以打开,阅读和closures端口。 但是,我想确保在任何时候我是唯一一个从港口读写的人。 我认为这已经为我做了open()函数调用后。 不过,我可以在程序的同一个端口上多次调用open()。 我也可以有两个线程同时从同一个端口读取。 我试着用flock()修复这个问题,我仍然有同样的问题。 是否因为两个系统调用来自同一个pid,即使每一组打开和读取都有不同的文件描述符? 为了logging,两个open()调用都返回一个有效的文件描述符。 因此,我想知道是否有什么办法可以解决问题。 从我的程序的angular度来看,如果两个调用open()在同一个端口上是成功的,那么程序员应该知道它们引起的闹剧是没有什么大不了的。 不过,我只想确保当我打开一个端口时,我是唯一访问它的进程。 谢谢您的帮助。

python的fcntl.flock函数是否提供文件访问的线程级locking?

Python的fcnt模块提供了一个名为[flock] [1]的方法来certificate文件locking。 它的描述如下: 对文件描述符fd执行锁操作op(也接受提供fileno()方法的文件对象)。 有关详细信息,请参阅Unix手册(2)。 (在某些系统上,这个函数是用fcntl()模拟的。) 查看flock的linux手册页,只涉及到跨进程locking,例如: 对flock()的调用可能会阻止另一个进程持有不兼容的锁。 要做出一个非阻塞的请求,包括LOCK_NB(ORing)与上述任何操作。 所以我的问题是:将flock()还提供线程安全locking和locking同一进程内的多个线程以及来自不同进程的线程? [1]: http : //docs.python.org/library/fcntl.html#fcntl.flockfunction是使用fcntl()模拟的。)

任何人都知道如何在Python中打开或closures大写locking?

当两个换档button按住一秒钟时,我试图切换大写locking开/关。 我试过使用virtkey模块,但它不工作。 该模块确实为其他键工作,所以我不认为我错误地使用该模块。 有没有人有办法做到这一点? 只是要清楚,我想实际上切换大写locking开/关,而不仅仅是LED。 谢谢!

用于基于文件的进程通信的Java文件locking机制

我有两个Java进程(JAR),每隔1分钟向一个文本文件写入数据,另一个正在读取该文件并调用Web服务以将数据存储在数据库中。 有什么办法来locking文件,当它在写模式? 我已经观察到,当wvdial拨号调制解调器时,它创build/var/lock/ttyUSB0..LOCK我想locking文件。 我想要一个这样的程序,如果文件处于写入模式,另一个进程可以等到写入完成。 写入过程后可以读取文件内容。 请指导我解决我的问题。 谢谢

JavaFileLock是一个POSIX顾问(fcntl)锁

我有一个C ++程序使用POSIX咨询锁来locking文件。 也就是说,它使用POSIX fcntl系统调用进行locking操作。 我想要一个Java程序与C ++程序互操作,所以我希望我的Java程序也使用POSIX咨询锁。 Java中的文件locking应该使用标准的FileLock类。 但是API文档对于如何实现locking是可以理解的: 这个文件lockingAPI旨在直接映射到底层操作系统的本机locking工具。 因此,无论程序写入的语言如何,文件上的锁应该对所有有权访问该文件的程序都可见。 如果我在POSIX操作系统,或更具体的GNU / Linux系统上运行Java(Oracles,Open JDK)的通用实现,假设Java FileLock类使用POSIX通知locking是否安全?

这个典型的羊群例子是如何工作的?

当必须通过文件系统同步程序(shell脚本)时,我发现了一个基于flock的解决scheme(也应该在NFS上工作)。 从脚本内使用的规范示例(来自http://linux.die.net/man/1/flock )是: ( flock -s 200 # … commands executed under lock … ) 200>/var/lock/mylockfile 我不明白为什么这个整个构造确保了primefaces性。 特别是,我想知道当例如bash执行这些代码200>/var/lock/mylockfile , flock -s 200和200>/var/lock/mylockfile被执行的200>/var/lock/mylockfile 。 这个顺序是保证/确定的吗? 我的理解是,这个习语应该是确定性的。 但是由于子shell是在subprocess中产生的,我不明白这两个进程是如何同步的。 我只看到这两个命令之间的竞争条件已经。 我会很感激,如果有人可以让我对这个消失的困惑,并解释为什么这个构造可以用来安全地同步进程。 同时,如果有人知道,我会感兴趣的是select一些任意的文件描述符(如本例中的200 )是多么的安全,特别是在有很多客户端的大型NFS文件系统的情况下。

Linux的文件锁

我试过使用临时文件: char *temp = tempnam(NULL, "myapp_"); printf("Tempname: %s", temp) // Prints /tmp/myapp_random while (1) { } 但是当我检查/tmp (而应用程序仍在运行),myapp_random不在那里! 至于使用文件锁,我不能很好地把握它,我试着看看<fcntl.h>但它似乎专注于locking文件的指定部分。 我只是想完全使用该文件作为锁(这就是为什么我更喜欢尝试临时文件的方法)。 有任何想法吗?

如何使用linux flock命令来防止另一个根进程删除文件?

我想阻止我的一个根进程删除某个文件。 所以我遇到了羊群的命令,这似乎符合我的需要,但我没有得到它的语法。 如果我只表示一个共享锁,它不起作用: flock -s "./file.xml" 如果我添加一个超时参数,它仍然不起作用 flock -s -w5 "./file.xml" 看起来这样,它适合在flock [-sxun][-w #] fd#方式。 (这是什么fd#参数?) 所以,我尝试了flock [-sxon][-w #] file [-c] command 使用flock -s -w5 "./file.xml" -c "tail -3 ./file.xml"并运行,执行./file.xml的tail命令。 但是我想知道,在命令执行结束后5秒,locking是否结束? 我的主要问题是,我怎样才能防止另一个根进程在linux中删除文件?

在Linux上,如何确保解锁locking在死亡/终止的线程中的互斥锁?

这是一个面试问题。 在Linux上,如何确保解锁locking在POSIX线程死亡/终止的POSIX互斥锁? 我的想法: 当发送kill或终止信号到程序时,Linux会自动释放它? 但是,我无法find有关操作系统如何操作的更多细节? 谢谢

Linux的群众,如何“只是”locking一个文件?

在Bash中,我试图让一个函数getLock与不同的锁名称一起使用。 function getLock { getLock_FILE="${1}" getLock_OP="${2}" case "${getLock_OP}" in "LOCK_UN") flock -u "${getLock_FILE}" rm -fr "${getLock_FILE}" ;; "LOCK_EX") flock -x "${getLock_FILE}" esac } 但是,羊群说: flock: bad number: myfilelock 我怎样才能locking一个文件,并在需要时释放它,而不必在群中执行一个命令? 它是这样使用的: getLock myfilelock LOCK_EX somecommands …….. getLock myfilelock LOCK_UN