我想知道你是否可以:只locking一个文件在Linux中的一行或一个单一的字符,其余的文件应保持访问其他进程? 我收到了一个有关在linux下使用c / c ++模拟事务的任务。 请给我一个答案,如果这个答案是肯定的,给我一些链接,我可以从中窥视这个任务。
谢谢,Madicemickael
是的,这是可能的。
Unix的方法是通过fcntl
或lockf
。 无论你选择什么,确保只使用它,而不是混合两者。 看看这个问题(与答案)有关: fcntl,lockf,哪个更好用于文件锁定? 。
如果可以的话,请参阅UNIX环境下高级编程的第14.3节。
fcntl()是一个可供选择的API,因为它是最少的破解,并且是POSIX。 它是唯一一个跨NFS工作的人。 也就是说,这也是一个完全的灾难,因为锁定了进程,而不是文件描述符。 这意味着,如果你锁定一个文件,然后其他线程或一些库函数锁定/解锁它,你的锁也将被打破。 此外,您不能使用文件系统锁来保护相同进程的两个线程互相干扰。 另外,您不应该在多个用户可访问的文件上使用文件锁定,因为这样可以有效地使用户冻结其他每个进程。
总之:Unix上的文件锁定会产生比解决问题更多的问题。 在使用它之前,你需要确定你完全理解语义。
lockf(3)
可以将锁应用于文件的某个部分。