考研 408 × 求职面试
知识点 · Linux · 高频
每日一题 · Linux
解析
面试小贴士 · Linux
代码实现 · C
#include <stdio.h>
#include <unistd.h>
#include <sys/stat.h>
int main(void) {
const char *target = "target.txt";
const char *hard = "hard.txt";
const char *soft = "soft.txt";
FILE *fp = fopen(target, "w");
if (!fp) return 1;
fputs("hello", fp);
fclose(fp);
unlink(hard);
unlink(soft); // 清理旧链接
if (link(target, hard) != 0) perror("link");
if (symlink(target, soft) != 0) perror("symlink");
struct stat st;
stat(target, &st);
printf("target inode=%lu nlink=%lu\n", (unsigned long)st.st_ino, (unsigned long)st.st_nlink);
stat(hard, &st);
printf("hard inode=%lu nlink=%lu\n", (unsigned long)st.st_ino, (unsigned long)st.st_nlink);
lstat(soft, &st); // lstat 查看软链接自身
printf("soft inode=%lu nlink=%lu\n", (unsigned long)st.st_ino, (unsigned long)st.st_nlink);
return 0;
}