C语言中建立和删除文件连接的相关函数讲解
C语言link()函数:建立文件连接
头文件:
#include<unistd.h>
定义函数:
intlink(constchar*oldpath,constchar*newpath);
函数说明:link()以参数newpath指定的名称来建立一个新的连接(硬连接)到参数oldpath所指定的已存在文件.如果参数newpath指定的名称为一已存在的文件则不会建立连接.
返回值:成功则返回0,失败返回-1,错误原因存于errno.
附加说明:link()所建立的硬连接无法跨越不同文件系统,如果需要请改用symlink().
错误代码:
1、EXDEV参数oldpath与newpath不是建立在同一文件系统.
2、EPERM参数oldpath与newpath所指的文件系统不支持硬连接
3、EROFS文件存在于只读文件系统内
4、EFAULT参数oldpath或newpath指针超出可存取内存空间.
5、ENAMETOLLONG参数oldpath或newpath太长
6、ENOMEM核心内存不足
7、EEXIST参数newpath所指的文件名已存在.
8、EMLINK参数oldpath所指的文件已达最大连接数目.
9、ELOOP参数pathname有过多符号连接问题
10、ENOSPC文件系统的剩余空间不足.
11、EIOI/O存取错误.
范例:
/*建立/etc/passwd的硬连接为pass*/ #include<unistd.h> main() { link("/etc/passwd","pass"); }
C语言unlink()函数:删除文件
头文件:
#include<unistd.h>
定义函数:
intunlink(constchar*pathname);
函数说明:unlink()会删除参数pathname指定的文件.如果该文件名为最后连接点,但有其他进程打开了此文件,则在所有关于此文件的文件描述词皆关闭后才会删除.如果参数pathname为一符号连接,则此连接会被删除。
返回值:成功则返回0,失败返回-1,错误原因存于errno
错误代码:
1、EROFS文件存在于只读文件系统内。
2、EFAULT参数pathname指针超出可存取内存空间。
3、ENAMETOOLONG参数pathname太长。
4、ENOMEM核心内存不足。
5、ELOOP参数pathname有过多符号连接问题。
6、EIOI/O存取错误。