内存分配:
malloc返回的的内存是线性的,所以它可以被映射到任何类型的指针上去。
文件封锁:
解除文件锁:(void)unlink(lock_file);
int fcntl(int fildes, int command, struct flock *flock_structure);
command:
F_GETLK:获取fildes打开的那个文件的封锁信息,它不会对文件进行封锁。
F_SETLK:对fildes指定的文件的某个区域实施或者解除封锁。
F_SETLKW
flock结构在不同版本有不同的实现方法,但至少包含以下几个成员:
short l_type:
short l_whence
off_t l_start:
off_t l_len:文件预定封锁区的字节个数
pid_t l_pid:拥有锁的进程的标识代码
l_type成员:(fcntl.h中定义)
F_RDLCK:一个共享(读操作)锁,文件必须以“读”或者“读、写”权限打开
F_UNLCK:解除封锁,用来清除各种封锁
F_WRLCK:写操作锁(独占锁)
l_whence:(unistd.h中定义)相对于l_start的偏移值
SEEK_SET:文件头
SEEK_CUR:当前位置
SEEK_END:文件尾
文件中的每个字节在任一时间只能拥有:共享访问锁,独占访问锁,解除封锁 这三
种中的一种。
程序对某个文件拥有的各种锁将在相应的文件描述符被关闭时自动清除,各种封锁在
程序结束时也会自动清除。
int res = fcntl(fildes , F_SETLK, &structofflock);(设置文件锁)
fcntl(fildes , F_GETLK, &structofflock);(读取)
fcntl(fildes , F_UNLCK, &structofflock); (解除)
待续......