Возможно ли использовать 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;
}