C语言 fstat() st_nlink=1 即使链接了更多文件


#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
int main(int argc, char const *argv[])
{
    struct stat buf;
    int fd;
    if (fd = open(argv[1], O_RDWR | O_CREAT)<0)
    {
        printf("file open errorn");
        return 1;
    }
    if (link(argv[1], "link1") + link(argv[1], "link2")<0)
    {
        printf("error linkn");
        return 1;
    }
    if (fstat(fd, &buf)<0)
    {
        printf("error fstatn");
        return 1;
    }
    printf("nlinks before = %d n", buf.st_nlink);
    if (unlink("link2") + unlink("link1") + unlink(argv[1])<0)
    {
        printf("unlink errorn");
        return 1;
    }
    if (fstat(fd, &buf)<0)
    {
        printf("error fstatn");
        return 1;
    }
    printf("nlinks after = %d n", buf.st_nlink);
    return 0;
}

输出: 之前的 nlink = 1 之后的 nlink = 1

为什么st_nlink总是 = 1,即使至少有 3 个指向文件的链接?另外,如果我改用lstat,我会得到 3 st_nlinks。为什么?

if (fd = open(argv[1], O_RDWR | O_CREAT)<0)

应该是:

if ( (fd = open(argv[1], O_RDWR | O_CREAT))<0) 

因为<优先级高于=

相关内容

  • 没有找到相关文章

最新更新