fcntl()函式呼叫成功,返回0。
f_getlk申請鎖,成功返回l_type=f_unlck;否則,返回原值。
f_setlk加鎖或解鎖,成功返回l_type為預置值。
共享(讀)鎖與獨佔(寫)鎖在單程序中可互相取代,多程序不相容。
多程序,原鎖為讀鎖時,在同檔案域可設讀鎖;原鎖為寫鎖,在同檔案域不可設讀/寫鎖。
#include
#include
#include
#include
int main()
region.l_type=f_rdlck;
region.l_whence=seek_set;
region.l_start=0;
region.l_len=50;
region.l_pid=1;
if((res=fcntl(fd,f_getlk,®ion))==0)
}else
region.l_type=f_rdlck;
region.l_whence=seek_set;
region.l_start=0;
region.l_len=40;
region.l_pid=2;
if((res=fcntl(fd,f_setlk,®ion))==0)
}else
region.l_type=f_wrlck;
if((res=fcntl(fd,f_getlk,®ion))==0)
}else
region.l_type=f_wrlck;
region.l_whence=seek_set;
region.l_start=0;
region.l_len=40;
region.l_pid=2;
if((res=fcntl(fd,f_setlk,®ion))==0)
}else
close(fd);
}
程式執行結果:
read lock will be setted.
l.type has not been changed.
l_start=0
l_len=50
l_pid=1
l.type has been changed.
l_start=0
l_len=40
l_pid=2
write lock will be setted.
l.type has not been changed.
l_start=0
l_len=40
l_pid=2
l.type has been changed.
l_start=0
l_len=40
l_pid=2
FORALL與BULKCOLLECT的使用方法
1 使用forall比for效率高,因為前者只切換一次上下文,而後者將是在迴圈次數一樣多個上下文間切換。2 使用bluk collect一次取出乙個資料集合,比用游標條取資料效率高,尤其是在網路不大好的情況下。但bluk collect需要大量記憶體。使用例子 1 定義乙個table create ...
display與visibility的使用 區別
display none 隱藏元素,且此元素無物理位置 visibility hidden 隱藏元素,但元素的物理位置依然存在 因為display none導致頁面上無此元素的空間,js就獲取不到此元素的資訊,此時應用visibility hidden來代替display none display ...
pyenv virtualenv 的安裝與使用
1 安裝pyenv 建立安裝目錄 mkdir pyenvgit clone pyenv git clone pyenv plugins pyenv virtualenvecho export pyenv root home pyenv bash profile echo export path py...