新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
ockf(fd,1,0)是给fd文件上锁,lockf(fd,0,0)是解锁,配合使用,实现进程的互斥。
创新互联专注于土默特左旗企业网站建设,响应式网站,商城网站建设。土默特左旗网站建设公司,为土默特左旗等地区提供建站服务。全流程定制开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
头文件
#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()函数允许将文件区域用作信号量(监视锁),或用于控制对锁定进程的访问(强制模式记录锁定)。试图访问已锁定资源的其他进程将返回错误或进入休眠状态,直到资源解除锁定为止。当关闭文件时,将释放进程的所有锁定,即使进程仍然有打开的文件。当进程终止时,将释放进程保留的所有锁定。
函数声明:
/* '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而没有lock),直接man lock查看