成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > fcntl函數(shù)的說明與實(shí)例 (文件加鎖)

fcntl函數(shù)的說明與實(shí)例 (文件加鎖)

熱門標(biāo)簽:新鄭電銷外呼系統(tǒng)線路 樺甸電銷機(jī)器人 地球地圖標(biāo)注方法 怎樣給景區(qū)加百度地圖標(biāo)注 河北語音電銷機(jī)器人 電話機(jī)器人哪里有賣的 河南智能電話機(jī)器人公司 壽光百度地圖標(biāo)注中心網(wǎng)站 商戶地圖標(biāo)注

對文件加鎖是原子性的,可以用于進(jìn)程間文件操作的同步。在linux下,有三個(gè)函數(shù)可以對文件進(jìn)程加鎖,分別是fcntl、flock、lockf。這里只說fcntl,它的用法也是最復(fù)雜的。

fcntl是file control的縮寫。在linux下大部分設(shè)備都是文件,所以fcntl的功能也比較多,包括:

•Duplicating a file descriptor(復(fù)制文件描述符)
•File descriptor flags(操作close-on-exec標(biāo)志)
•File status flags(操作文件O_RDONLY , O_WRONLY , O_RDWR , O_APPEND , O_NONBLOCK , O_SYNC和O_ASYNC標(biāo)識)
•Advisory locking(建議性鎖)
•Mandatory locking(強(qiáng)制性鎖)
•Managing signals(管理信號)
•Leases(租借鎖)
•File and directory change notification (dnotify)(文件和目錄更改消息)
•Changing the capacity of a pipe(改變管道大小)

這里只說一下Advisory locking和Mandatory locking。建議性鎖是指給文件上鎖后,只在文件上設(shè)置了一個(gè)鎖的標(biāo)識。其他進(jìn)程在對這個(gè)文件進(jìn)程操作時(shí),可以檢測到鎖的存在,但這個(gè)鎖并不能阻止它對這個(gè)文件進(jìn)行操作。這就好比紅綠燈,當(dāng)亮紅燈時(shí),告訴你不要過馬路,但如果你一定要過,也攔不住你。強(qiáng)制性鎖則是當(dāng)給文件上鎖后,當(dāng)其他進(jìn)程要對這個(gè)文件進(jìn)程不兼容的操作(如上了讀鎖,另一個(gè)進(jìn)程要寫),則系統(tǒng)內(nèi)核將阻塞后來的進(jìn)程直到第一個(gè)進(jìn)程將鎖解開。在該功能下,fcntl的函數(shù)原型為:


復(fù)制代碼
代碼如下:

#include unistd.h>
#include fcntl.h>/p> p>int fcntl(int fd, int cmd,struct flock *plock );/p> p>struct flock {
...
short l_type; /* Type of lock: F_RDLCK,
F_WRLCK, F_UNLCK */
short l_whence; /* How to interpret l_start:
SEEK_SET, SEEK_CUR, SEEK_END */
off_t l_start; /* Starting offset for lock */
off_t l_len; /* Number of bytes to lock */
pid_t l_pid; /* PID of process blocking our lock
(F_GETLK only) */
...
};

Advisory locking共有三個(gè)操作,分別是F_GETLK、F_SETLK、F_SETLKW。其中F_GETLK用來測試鎖,注意是測試而不是獲取鎖;F_SETLK用來加鎖、解鎖;F_SETLKW功能同F(xiàn)_SETLK,只是操作變成阻塞式的。而fcntl可以用過l_whence、l_start、l_len來控制文件上鎖的區(qū)間。下面分別是上鎖、測試鎖的代碼。


復(fù)制代碼
代碼如下:

/* slock.c *//p> p>#include unistd.h>
#include fcntl.h>
#include sys/types.h>
#include sys/stat.h>/p> p>int main()
{
struct flock _lock;/p> p> _lock.l_type = F_WRLCK;
_lock.l_whence = SEEK_SET;
_lock.l_start = 0;
_lock.l_len = 0;/p> p> int fd = open( "/dev/shm/test",O_CREAT|O_RDWR,S_IRWXU|S_IRGRP|S_IWGRP|S_IRWXO );
if ( fd 0 )
{
puts( "open error" );
return 0;
}/p> p> int ret = fcntl( fd,F_SETLK,_lock );
if ( ret 0 )
{
puts( "fcntl error" );
close( fd );
return 0;
}/p> p> puts( "sleep now ..." );
sleep( 100 );
puts( "exit..." );

_lock.l_type = F_UNLCK;
_lock.l_whence = SEEK_SET;
_lock.l_start = 0;
_lock.l_len = 0;/p> p> ret = fcntl( fd,F_SETLK,_lock );
if ( ret 0 )
{
puts( "unlock error" );
}/p> p> close( fd );
}


復(fù)制代碼
代碼如下:

/* glock.c *//p> p>#include unistd.h>
#include fcntl.h>
#include sys/types.h>
#include sys/stat.h>
#include stdio.h>/p> p>int main()
{
struct flock _lock;/p> p> _lock.l_type = F_RDLCK;
_lock.l_whence = SEEK_SET;
_lock.l_start = 0;
_lock.l_len = 0;/p> p> int fd = open( "/dev/shm/test",O_RDWR );
if ( fd 0 )
{
perror( "open error" );
return 0;
}/p> p> int ret = fcntl( fd,F_GETLK,_lock );
if ( ret 0 )
{
perror( "fcntl error:" );
close( fd );
return 0;
}/p> p> printf( "lock is %d\n",_lock.l_type );/p> p> close( fd );
}

在上面的代碼中,"_lock.l_type =  F_RDLCK;"表示給文件上讀共享鎖,"_lock.l_whence = SEEK_SET;"表示從文件開頭開始加鎖,"_lock.l_start = 0;"表示偏移l_whence多少字節(jié)開始加鎖,"_lock.l_len = 0;"表示加鎖的字節(jié)數(shù),即長度(Specifying 0  for  l_len  has  the  special meaning:  lock all bytes starting at the location specified by l_whence and l_start through to the end of file, no matter how  large  the  file grows.)。

在上面的代碼中,分別編譯為slock、glock。先運(yùn)行slock再運(yùn)行g(shù)lock:


復(fù)制代碼
代碼如下:

./slock
sleep now ...
./glock
lock is 1
exit...

slock先給文件上寫鎖,然后glock測試讀共享鎖是否能加上,測試結(jié)果是已存在一個(gè)寫鎖(F_WRLCK,debian下定義為1)。這里需要注意的是F_GETLK是測試鎖是否能加上,如果可以,則struct flock中的l_type為F_UNLCK;如果不行,則l_type為文件當(dāng)前鎖的類型,而l_pid為上鎖的進(jìn)程pid。故如果slock上的鎖是F_RDLCK,glock測試的鎖也是F_RDLCK,這兩個(gè)鎖是兼容的,返回的l_type類型為F_UNLCK。即你不能通過F_GETLK來判斷文件是否上鎖,只能測試某個(gè)鎖是否能加上。

  上面的是建議性鎖,如果要實(shí)現(xiàn)強(qiáng)制性鎖,則:


復(fù)制代碼
代碼如下:

To make use of mandatory locks, mandatory locking must be enabled both on the filesystem that contains the file to be locked, and on the file itself. Mandatory locking is enabled on a filesystem using the "-o
    mand" option to mount(8), or the MS_MANDLOCK flag for mount(2). Mandatory locking is enabled on a file by disabling group execute permission
on the file and enabling the set-group-ID permission bit (see chmod(1) and chmod(2)).

這是說,要實(shí)現(xiàn)強(qiáng)制性鎖則須將文件所在的文件系統(tǒng)用"-o mand"參數(shù)來掛載,并且使用chmod函數(shù)將文件用戶組的x權(quán)限去掉。然后用上面同樣的代碼就可以了。我第一次見這么奇特的函數(shù),實(shí)現(xiàn)一個(gè)功能并不是通過本身的參數(shù)控制,而是系統(tǒng)設(shè)置.....幸好我也不用強(qiáng)制性鎖。

  以上是fcntl加文件鎖的簡單例子。需要注意的是不同系統(tǒng)的實(shí)現(xiàn)并不一樣,宏定義也不一樣。如:

http://www.opensource.apple.com/source/xnu/xnu-1456.1.26/bsd/sys/fcntl.h

 /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
#define    F_RDLCK        1        /* shared or read lock */
#define    F_UNLCK        2        /* unlock */
#define    F_WRLCK        3        /* exclusive or write lock */

 

而在debian中,/usr/include/bits/fcntl.h
/* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
#define F_RDLCK         0       /* Read lock.  */
#define F_WRLCK         1       /* Write lock.  */
#define F_UNLCK         2       /* Remove lock.  */

標(biāo)簽:來賓 阜陽 迪慶 淄博 楚雄 遼陽 荊州 忻州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《fcntl函數(shù)的說明與實(shí)例 (文件加鎖)》,本文關(guān)鍵詞  fcntl,函數(shù),的,說明,與,實(shí)例,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《fcntl函數(shù)的說明與實(shí)例 (文件加鎖)》相關(guān)的同類信息!
  • 本頁收集關(guān)于fcntl函數(shù)的說明與實(shí)例 (文件加鎖)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    色婷婷久久久亚洲一区二区三区| 男女午夜刺激视频| 天堂av在线一区| 国产在线88av| 国产尤物av一区二区三区| av影视在线看| 欧美性猛交xxxx乱大交极品| 欧美特级xxxxbbbb毛片| 欧美激情在线免费观看| 国产日韩电影| 99视频在线免费观看| 欧美国产视频日韩| 91香蕉视频在线观看视频| 国产精品久久精品国产| 天天草天天草| 欧美精品videos另类| 亚洲无av在线中文字幕| 色噜噜狠狠色综合欧洲selulu| 在线免费观看av片| 久久国产精品亚洲人一区二区三区| 91亚洲资源网| 国产韩国精品一区二区三区| 国产精品久久久久精k8| 91久久中文| 日本高清视频www| 91不卡在线观看| 精品捆绑调教一区二区三区| 91国产免费视频| 国产成人自拍视频在线观看| 久久精品一区| 亚洲熟妇无码av在线播放| 亚洲理论电影网| 来吧亚洲综合网| 在线观看爽视频| 色综合久久久久综合一本到桃花网| aa国产成人| www.午夜激情| 91亚洲天堂| 欧美体内谢she精2性欧美| av在线免费观看国产| 国产精品日本一区二区| 欧美xxxxx18| 亚洲天天综合网| 黄色动漫在线免费观看| 巨胸喷奶水www久久久免费动漫| 337p日本欧洲亚洲大胆张筱雨| 色的视频在线观看免费播放| 激情五月综合| jizz欧美激情18| 国产亚洲精品久久飘花| 国产乱码久久久久| 日本一区视频在线观看| 欧美日韩国产探花| 国产丝袜视频在线播放| 日本高清中文字幕在线| 精品亚洲男同gayvideo网站| 欧美狂野激情性xxxx在线观| 在线人成日本视频| 精品国产凹凸成av人网站| 久久久久久久久久国产精品| 免费在线观看av网址| 日本不卡一区二区三区| 少妇bbw搡bbbb搡bbbb| 亚洲成人精品在线观看| 91在线视频播放地址| av福利在线播放| 诱受h嗯啊巨肉高潮| 日韩福利在线视频| 嫩草影院入口一二三| 欧美日韩一区二区三区在线看| 日韩视频在线免费看| 国内a∨免费播放| 熟妇高潮一区二区高潮| 国产黄a三级三级看三级| 99热精品久久| 精品国产成人av在线免| 狠狠色丁香婷综合久久| 欧美日本亚洲韩国国产| 嘿嘿视频在线观看| 欧美日韩国产麻豆| 99久久免费视频.com| 福利一区二区在线观看| 国产a∨精品一区二区三区仙踪林| 亚洲国产不卡| 亚洲成a人片777777久久| 日本道在线观看| 国产毛片精品视频| av影视在线看| 91久久综合亚洲鲁鲁五月天| 亚洲第一在线播放| 亚洲国产一区二区三区a毛片| 日韩精品高清在线| 成人午夜激情视频| 亚洲人成午夜免电影费观看| 色视频www在线播放国产成人| 97久久超碰| 国产精伦一区二区三区| 在线播放黄色网址| 密臀av在线| 久久爱91午夜羞羞| www视频免费看| 亚洲日本精品视频| 日韩亚洲天堂| 久久精品青草| 午夜视频在线看| 爽爽窝窝午夜精品一区二区| 国产做受高潮69| 人人妻人人玩人人澡人人爽| 国产99久久久国产精品潘金| 老师我好爽再深一点的视频| 在线理论视频| 亚洲av毛片在线观看| 26uuu亚洲婷婷狠狠天堂| 内射后入在线观看一区| 天天综合天天综合| av资源亚洲| 成人一级片免费看| 天天躁夜夜躁狠狠是什么心态| 青青草91久久久久久久久| 国产伦精品一区二区三区四区免费| 国产一级一片免费播放| 一区二区精品视频在线观看| 国产一区调教| 日韩无码精品一区二区三区| 九色porny自拍| 高清国产福利在线观看| www免费视频观看在线| 99精品国产视频| 最新一本之道波多野结衣| 狠狠干夜夜爽| 在线成人一区二区| 欧美国产日韩综合| 国产亚洲一级| 麻豆国产91在线播放| av美女在线观看| 久久久久高潮毛片免费全部播放| 先锋影音av资源在线| 国产精品久久久久一区二区国产| 久久精品a一级国产免视看成人| 影音先锋人妻啪啪av资源网站| 国产suv精品一区二区三区| 国产在线观看免费网站| 国产精品99蜜臀久久不卡二区| 一级毛片免费看| 午夜精品一区二区三区三上悠亚| 久久er99精品| 综合一区中文字幕| 久久中国妇女中文字幕| 中文成人av在线| 97在线电影| 好操啊在线观看免费视频| 激情成人午夜视频| 91亚洲一区二区| 国产小视频免费观看| 欧美日韩亚洲激情| 国产剧情日韩欧美| 日本精品视频一区| 中文字幕第99页| 国产精久久久久| 精品美女视频| 久久免费看视频| 伊人精品成人久久综合软件| 国产精品无码电影在线观看| 亚洲网站一区| 性爱视频日本| 欧美成人一区在线| 国产中文字幕视频在线观看| 国产日韩av一区| 中文字幕你懂的| 欧美/亚洲一区| 亚洲福利一区二区| 霍思燕三级露全乳照| 日韩精品午夜| 亚洲成人久久影院| 日韩欧美亚洲在线| 日本久久久久久久久久久久| 久久久亚洲精华液精华液精华液| 91人人爽人人爽人人精88v| 天堂va蜜桃一区二区三区| 欧洲综合视频| 国产精品二区二区三区| 久热免费在线视频| 日韩欧美国产精品一区二区三区| 亚洲精品天天看| 亚洲自拍偷拍网站| 国产原创中文av| 91人人网站| 国产成人在线综合| 国内精品国产三级国产aⅴ久| 999国产精品| 午夜精品123| 91精品国产自产在线观看永久∴| 自拍欧美日韩| 亚洲 国产 欧美一区| 无码日本精品xxxxxxxxx| 日本h片久久| 熟女av一区二区| 无码国产精品一区二区高潮| 精品久久久久久中文字幕| 日韩亚洲国产免费| 亚洲一区二区久久久| 精品粉嫩aⅴ一区二区三区四区| www.男人天堂.com| 在线能看的av网站| 神马伦理电影| 艹b视频在线观看| 中文字幕制服丝袜一区二区三区| 狠狠躁日日躁夜夜躁av| 亚洲人成网站999久久久综合| 亚洲精品第二页| 国产91丝袜在线播放| 日本男人天堂网| 亚洲激情国产| 久久精品国产一区二区三区免费看| 成网站在线观看人免费| 欧美与亚洲与日本直播| 日韩激情美女| 国产亚洲一区二区精品| 一级黄色av片| 91精品国产色综合久久不卡粉嫩| 色呦呦在线看| 日韩欧美亚洲国产另类| 国产美女自慰在线观看| 影音先锋在线影院| 欧美日韩一区二区三区四区在线观看| 精品欧美一区二区久久| 久久av资源| 古装做爰无遮挡三级聊斋艳谭| 国产精品99久久免费| 成年人性生活视频| 无码av中文一区二区三区桃花岛| 久久一本精品| 欧美日韩中文字幕一区二区| 无码av免费一区二区三区试看| 国产无套丰满白嫩对白| 在线观看国产一区二区| 成人情趣片在线观看免费| 国产乱码久久久久| 国产三级三级在线观看| 国产91对白刺激露脸在线观看| 好吊日在线视频| 四虎成人免费视频| 麻豆影视国产在线观看| a'aaa级片在线观看| 欧美在线亚洲| 久久久久久a亚洲欧洲aⅴ| 国产一区精品在线| 中文字幕 日韩有码| 日韩av中文字幕一区二区| 日韩一区二区三区免费播放| 欧美电影h版| 久久久国产综合精品女国产盗摄| 亚洲午夜精品久久久久久高潮| 国产精品久久久久影院| 中文字幕av片| 久久九九亚洲综合| 日本在线视频www鲁啊鲁| 亚洲一区激情| 久久综合影院| √资源天堂中文在线| 国产精品av一区| 中文字幕1区2区| 一个人看的日本www的免费视频| 五月婷婷激情网| 真实国产乱子伦对白视频| 免费观看一级一片| 一区二区三区精密机械公司| 亚洲精品国产品国语在线app| 97人人模人人爽人人喊中文字| av无码av天天av天天爽| 激情丁香综合| 懂色av粉嫩av蜜乳av| 精品人妻无码一区二区性色| 99国产精品无码| 亚洲欧美一级二级三级| 99ri日韩精品视频| 国产午夜视频在线播放| 日日骚一区二区网站| 538国产精品一区二区在线| 69精品小视频| 欧洲精品二区| 在线黄色的网站| 欧洲精品一区色| 大香煮伊手机一区| 91麻豆精品国产综合久久久| avove在线播放| 日韩精品免费一区二区夜夜嗨| www亚洲一区| 亚洲黄色激情视频| 亚洲国产精品久久网午夜小说| av高清日电影| 中日韩av电影| av天堂一区二区三区| 国产激情精品久久久第一区二区| 亚洲午夜国产成人| 波多野结衣福利| 色综合咪咪久久| 国产成人永久免费视频| 中文字幕激情视频| 好吊妞无缓冲视频观看| 国产人成一区二区三区影院| 四虎免费在线视频| 亚洲成人在线观看视频| 调教视频vk| www色aa色aawww| proumb性欧美在线观看| 天天碰日日操| 三级在线观看视频| 大伊香蕉精品在线品播放| 精品国产一区二区三区四区精华| 可以免费观看av的网站| av成人app永久免费| 亚洲国产欧美一区二区三区不卡| 在线看的av| 日产亚洲一区二区三区| 羞羞色国产精品网站| 91久久精品国产性色| 国产男女猛烈无遮挡a片漫画| 岛国av一区二区三区| 亚洲理论中文字幕| 九色视频在线观看免费| 国产精品一区二区99| 一二三四在线观看视频韩国| 一区二区三区的久久的视频| 国产福利免费观看| 十大黄色软件免费看| 蜜臀久久99精品久久久画质超高清| 欧美极品欧美精品欧美图片|