ockf(fd,1,0)是給fd文件上鎖,lockf(fd,0,0)是解鎖,配合使用,實現進程的互斥。
創(chuàng)新互聯專注于土默特左旗企業(yè)網站建設,響應式網站,商城網站建設。土默特左旗網站建設公司,為土默特左旗等地區(qū)提供建站服務。全流程定制開發(fā),專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯專業(yè)和態(tài)度為您提供的服務
頭文件
#include sys/file.h
函數:
int lockf(int fd, int cmd, off_t len);
fd -- 文件id.
fcntl(2)的接口(inteface)函數
返回1表示調用lockf成功.
lockf用于鎖定或打開鎖定一個共享文件.
操作有:
F_LOCK(鎖定),F_TLOCK,F_ULOCK(打開鎖定),F_TEST
擴展資料:
注意事項
lockf()函數允許將文件區(qū)域用作信號量(監(jiān)視鎖),或用于控制對鎖定進程的訪問(強制模式記錄鎖定)。試圖訪問已鎖定資源的其他進程將返回錯誤或進入休眠狀態(tài),直到資源解除鎖定為止。當關閉文件時,將釋放進程的所有鎖定,即使進程仍然有打開的文件。當進程終止時,將釋放進程保留的所有鎖定。
函數聲明:
/* 'lockf' is a simpler interface to the locking facilities of 'fcntl'. LEN is always relative to the current file position. The CMD argument is one of the following. This function is a cancellation point and therefore not marked with __THROW. */
#include unistd.h
int lockf(int fd, int cmd, off_t len);
Linux的源碼中x86體系結構原子操作的定義文件為。
linux2.6/include/asm-i386/atomic.h
文件內定義了原子類型atomic_t,其僅有一個字段counter,用于保存32位的數據。
typedef struct { volatile int counter; } atomic_t;
其中原子操作函數atomic_inc完成自加原子操作。
/**
* atomic_inc - increment atomic variable
* @v: pointer of type atomic_t
*
* Atomically increments @v by 1.
*/
static __inline__ void atomic_inc(atomic_t *v)
{
__asm__ __volatile__(
LOCK "incl %0"
:"=m" (v-counter)
:"m" (v-counter));
}
其中LOCK宏的定義為。
#ifdef CONFIG_SMP
#define LOCK "lock ; "
#else
#define LOCK ""
#endif
可見,在對稱多處理器架構的情況下,LOCK被解釋為指令前綴lock。而對于單處理器架構,LOCK不包含任何內容。
lock -np
最常用搭配,永久鎖屏,直到輸入密碼為止
其實問這個問題最好問你自己的電腦,因為有幾個版本還沒這個命令(比如我的就是vlock而沒有l(wèi)ock),直接man lock查看