是否可以在fcntl()
以外的函数中使用main()
?调用后文件是否解锁?我这样说是因为在这种情况下fcntl()
和lockfile()
内的大部分内容都超出了函数returns
。
int lockfile(void){
int fd;
const char *path = "path-to-lockfile";
struct flock fl;
fl.l_type = F_WRLCK;
fl.l_whence = SEEK_SET;
fl.l_start = 0;
fl.l_len = 0
fl.l_pid = getpid();
fd = open(path, O_RDWR|O_CREAT);
fcntl(fd, F_SETLKW, &fl);
return fd;
}
答案 0 :(得分:2)
fcntl
调用会锁定文件。它一直保持到文件关闭或锁定被释放为止。只需告诉fcntl
该做什么,就需要这些结构。