📄 prwlock.cpp
字号:
#include "prwlock.h"#include <fcntl.h>#include <errno.h>#define write_lock(fd, offset, whence, len) \ lock_reg(fd, F_SETLKW, F_WRLCK, offset, whence, len)#define read_lock(fd, offset, whence, len) \ lock_reg(fd, F_SETLKW, F_RDLCK, offset, whence, len)#define un_lock(fd, offset, whence, len) \ lock_reg(fd, F_SETLK, F_UNLCK, offset, whence, len)int lock_reg(int fd, int cmd, int type, off_t offset, int whence, off_t len){ struct flock lock; lock.l_type = type; /* F_RDLCK, F_WRLCK, F_UNLCK */ lock.l_start = offset; /* byte offset, relative to l_whence */ lock.l_whence = whence; /* SEEK_SET, SEEK_CUR, SEEK_END */ lock.l_len = len; /* #bytes (0 means to EOF) */ return( fcntl(fd, cmd, &lock) ); /* -1 upon error */}int Prwlock::wlock(int fd){ int ret; while((ret=write_lock(fd,0,SEEK_SET,0)) < 0) { if(errno == EINTR) { continue; } else { return ret; } } return ret;}int Prwlock::rlock(int fd){ int ret; while((ret=read_lock(fd,0,SEEK_SET,0)) < 0) { if(errno == EINTR) { continue; } else { return ret; } } return ret;}int Prwlock::unlock(int fd){ return un_lock(fd,0,SEEK_SET,0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -