1.硬连接
命令
ln soursefile(bigfile) destfile(bigfile_ln)
执行前 bigfile inode 262213 links 1
执行后 bigfile inode 2622213 links 2
bigfile_ln inode 2622213 links 2
硬连接是目录项的同义词,生成的是普通文件。
ln命令实际上是在当前目录下的目录文件中多写了一行,有另一个名字也关联当前inode信息。就像是两个指针指向同一个空间。
删除源文件后,链接文件还能用。link的值是几就有几个名字指向某一个INODE。
建立硬连接是有限制的:不能跨分区建立(inode重复),不能给目录建立。
2.符号链接
源文件和符号链接文件时两个独立的文件,有不同的文件INODE,以及各自的属性。
命令
ln -s symbol symbol_s
符号链接文件很小不占磁盘空间,符号链接文件可以划分区建立,因为是不同的INODE号,也可以给目录建立。符号链接文件的文件属性是符号链接文件。
删除源文件,符号链接文件再次打开会报错。
类似于windows的快捷方式。
int link(const char *oldpath,const char *newpath);
ln命令是由link函数封装出来的。
int unlink(const char *pathname);
删除一个名字或一个文件硬连接。
unlink函数的另一个用途就是用来创建临时文件,如果在程序中使用open创建了一个文件后,然后立即使用 unlink 函数删除文件,由于此时进程正在打开该文件,所以系统并不会释放该文件的 inode 节点,而只是删除其目录项。当进程退出时,该inode节点将会立即被释放。
int remove(const char *pathname);
删除一个目录和文件,封装成rm命令。
int rename (const char *oldpath,const char *newpath);
封装成mv命令
utime
int utime(const char *filename,const struct utimbuf*times);
要该最后一次读的时间atime和写的时间,mtime
目录的创建与销毁。
int mkdir(const char *pathname,mode_t mode);创建目录指定权限
int rmdir(const char *pathname);删除一个目录但必须是空的。
int chdir (const char *path);更改当前工作路径
long getcwd(char *buf,unsigned long size);获取当前路径。