: x& |. }$ o t. @5 ~3 w. R' CLinux系统中,文件上锁的函数有两个flock和fcntl ,前者主要是加建议性锁,后者既可以加建议性锁(默认)也可以加强制性锁,而且它还可以给某一记录进行上锁,即所谓的记录锁。+ @! c0 p; ]8 a v0 L& y3 E
% e) a$ D9 i: ]9 G
; i4 C- k% y5 j: s- V0 v: Vfcntl文件锁有两种类型:建议性锁 和强制性锁 1 L; h5 r; w6 c& P 建议性锁是这样规定的:每个使用上锁文件的进程都要检查是否有锁存在,当然还得尊重已有的锁。内核和系统总体上都坚持不使用建议性锁,它们依靠程序员遵守这个规定。/ o7 o$ u$ a- P$ N2 o% O' q# W
强制性锁是由内核执行的。当文件被上锁来进行写入操作时,在锁定该文件的进程释放该锁之前,内核会阻止任何对该文件的读或写访问,每次读或写访问都得检查锁是否存在。 + O5 _7 Q, M+ B) b0 j( }3 s/ G+ G3 K! J1 Q
$ t/ d5 N* Y( Y