硬链接与符号链接 及共享库

来源:互联网 发布:龙少泛站群软件 编辑:程序博客网 时间:2024/06/05 04:36

硬链接不能跨越文件系统;不能连接到目录

符号链接只是在创建一个独立的文件,而这个文件会让数据的读取指向它连接的那个文件的文件名,由于只是

利用文件来作为指向的操作,所以,当源文件被删除之后,符号连接的文件会开不了。会一直说无法打开某文件,实际上,就是找不到源文件的

文件名而已。

制作连接文件必须要使用ln这个命令

一般的命令格式为

[root@www~]# ln [-sf]  源文件 目标文件

-s:如果不加任何参数进行连接,那就是hard link,至于-s就是symbolic link

-f:如果目标文件存在,就主动将目标文件直接删除再创建。

 

 

 

symlink和readlink函数

symlink函数创建一个符号链接

#include<unistd.h>

int symlink(const char*actualpath, const char* sympath)

 该函数创建了一个指向actualpath的新目录项sympath,在此符号链接时,并不要求actualpath已经存在,并且actualpath,sympath不需要在同一文件系统中。

 

 

因为open函数跟随符号链接,所以需要一种方法打开该链接本身,并读取该连接中的名字,readlink函数提供了这种功能。

#include<unistd.h>

ssize readlink(const char*restrict pathname,char *restrict buf, size_t bufsize);

此函数结合了open、read和close的所有操作,如果此函数执行成功,则它返回buf的字节数,在buf中返回的符号链接的内容不以null字符终止。

 

 

 

 

 

 

 

现在。大多数unix系统都支持共享库。共享库使得可执行文件中不再需要包含公共的库例程,而只需要在所有的进程都可以引用的存储区中维护这种库例程的一个副本,程序第一次执行或者调用某个库函数时 ,用动态链接的方法将程序与共享库函数相链接。这减少了每个可执行文件的长度,但是增加了一些运行时间的开销。这种时间开销用在该程序第一次被执行或者每个共享库函数第一次被调用时,共享库的另一优点是可以用库函数的新版本代替老版本,而不需要对使用该库的程序重新连接编辑。

0 0