Linux unlink命令
March 18, 2018
本文将会讲述Linux系统下unlink删除文件命令的用法。 Unlink 命令会直接调用linux系统下的unlink系统函数,来删除指定的某一个文件。
Table of Contents
Linux unlink 命令格式及参数
命令格式如下:
Unlink {文件名} Unlink {选项}
Unlink 参数如下:
--help – 显示该命令的帮助信息并退出命令 --version –显示命令的版本信息并退出命令
Unlink命令只有提供了上面的两个参数。
Linux unlink命令实例
1# 删除当前目录下的名为fio.txt 的文件,执行下面的命令:
# unlink fio.txt
命令输出如下:
root@devops:~/osetc# ls fio1.txt fio2.txt fio.txt root@devops:~/osetc# unlink fio.txt root@devops:~/osetc# ls fio1.txt fio2.txt
上面我提到过,unlink 命令只能同时删除一个文件,当你指定多个文件时,系统会提示错误信息。 如下:
root@devops:~/osetc# unlink fio1.txt fio2.txt unlink: 额外的操作数 "fio2.txt" Try 'unlink --help' for more information. root@devops:~/osetc#
Linux unlink系统函数
Unlink函数会从文件系统中删除一个指定的文件名称。如果名称是文件的最后一个连接,并且没有其它进程将文件打开,名称对应的文件会实际被删除。
Unlink函数用法:
#include int unlink(const char *pathname);
Unlink函数参数:
pathname:指向需解除连接的文件名。
返回说明:
成功执行时,返回0。失败返回-1,errno被设为以下的某个值 EACCES:权能不足 EFAULT: 内存空间不可访问 EIO:发生输入输出错误 EISDIR:pathname索引的是目录 ELOOP :路径解析的过程中存在太多的符号连接 ENAMETOOLONG:路径名超出可允许的长度 ENOENT:路径名部分内容表示的目录不存在,或者是悬浮的连接 ENOMEM: 核心内存不足 ENOTDIR:路径名的部分内容不是目录 EPERM : 文件系统不支持文件或者目录的解除连接,也有可能是权限步允许 EROFS :文件系统只读
当文件的连接数为0的时候,并且没有任何进程打开这个文件,这个文件的存储数据才会被真正的删除。
#include<stdio.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> #include<unistd.h> int main() { int fd; char buf[32]; struct stat buff; if((fd=open("temp.txt",O_RDWR|O_CREAT|O_TRUNC,S_IRWXU))<0){ printf("create file error!\n"); } stat("temp.txt",&buff); printf("temp.link=%d\n",buff.st_nlink); link("temp.txt","test.txt"); stat("test.txt",&buff); printf("after link the tem.link =%d\n",buff.st_nlink); if(unlink("temp.txt")<0){ printf("unlink error !\n"); } stat("temp.txt",&buff); printf("after unlink tem.link=%d\n",buff.st_nlink); if(write(fd,"temp",5)<0){ printf("write wrror!\n"); } if((lseek(fd,0,SEEK_SET))==-1){ printf("lseek error!\n"); } if((read(fd,buf,5))<0){ printf("read error!\n"); } printf("%s\n",buf); return 0; }
99%的人还阅读了:
0 Comments