fcntl()范围可见性行为?

时间:2012-03-02 21:10:31

标签: c linux unix gcc posix

是否可以在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;
}

1 个答案:

答案 0 :(得分:2)

fcntl调用会锁定文件。它一直保持到文件关闭或锁定被释放为止。只需告诉fcntl该做什么,就需要这些结构。