linux 什么是硬链接

linux 什么是硬链接,第1张

链接(hard link):A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

linux硬链接与软链接

Linux链接概念

Linux链接分两种,一种被称为硬链接(HardLink),另一种被称为符号链接(SymbolicLink)。默认情况下,ln命令产生硬链接。【硬连接】硬连接指通过索引节点来进行连接。

1).删除符号连接f3,对f1,f2无影响;

2).删除硬连接f2,对f1,f3也无影响;

3).删除原文件f1,对硬连接f2没有影响,导致符号连接f3失效;

4).同时删除原文件f1,硬连接f2,整个文件会真正的被删除。可参考《Linux就该这么学》了解更多Linux知识。

挺简单的,fork一子一父进程,父进程循环读入文件内容,并写进道管道里面,子进程循环从管道接收然后打印出来。

#include <stdio.h>

#include <stdlib.h>

#include <sys/types.h>

#include <sys/wait.h>

#include <unistd.h>

#include <string.h>

#include <fcntl.h>

int main()

{

pid_t result

int n,num

int pipe_fd[2]

int fd

char buf1[100],buf2[100]

memset(buf1,0,sizeof(buf1))

memset(buf2,0,sizeof(buf2))

fd = open("/home/w.c",O_RDONLY)

if(pipe(pipe_fd)<0)

{

printf("error!\n")

return -1

}

result=fork()

if(result<0)

{

printf("error!\n")

exit(0)

}

else if(result==0)

{

close(pipe_fd[1])

while((n =read(pipe_fd[0],buf1,99))>0)

{

buf1[n] = '\0'

printf("%s",buf1)

memset(buf1,0,sizeof(buf1))

}

}

else

{

close(pipe_fd[0])

while((num = read(fd,buf2,99)) >0){

write(pipe_fd[1],buf2,strlen(buf2))

}

waitpid(result,NULL,0)

}

close(pipe_fd[1])

close(pipe_fd[0])

close(fd)

return 0


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8450730.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存