2012-03-02 79 views
3

是否可以在main()以外的其他功能中使用fcntl()?调用文件后文件是否解锁?我这样说是因为在这种情况下,fcntl()lockfile()内的大部分内容都在功能returns以外的范围内。fcntl()范围可见性行为?

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

请仔细阅读并认为我们将讨论鸟类植绒行为。 – 2012-03-02 22:38:55

回答

2

fcntl电话放置在文件上的锁。它一直保留到文件关闭或锁定被释放。这些结构仅用于告知fcntl要做什么。