在删除原始文件后,其硬链接链接计数器会减1,若减至0则删除文件数据块。软链接中指向路径不会发生变化,而原始文件路径已经不存在了,所以再次访问软链接会报错No such file or directory,而硬链接因为在创建时,向原始文件的硬链接计数器st_nlink加1了,因此删除原始文件也只是使其减1,并没有删除数据块,硬链接仍然能访问原始数据块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
structstat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* Inode number */ mode_t st_mode; /* File type and mode */ nlink_t st_nlink; /* Number of hard links 硬链接计数器在这里 */ uid_t st_uid; /* User ID of owner */ gid_t st_gid; /* Group ID of owner */ dev_t st_rdev; /* Device ID (if special file) */ off_t st_size; /* Total size, in bytes */ blksize_t st_blksize; /* Block size for filesystem I/O */ blkcnt_t st_blocks; /* Number of 512B blocks allocated */ structtimespecst_atim;/* Time of last access */ structtimespecst_mtim;/* Time of last modification */ structtimespecst_ctim;/* Time of last status change */ };