Linux中unlink函数的使用

unlink函数用于删除文件,但并不立即删除,而是减少文件连接数。只有当连接数为1且无进程打开文件时,文件才会真正删除。在有进程打开文件的情况下,文件会在所有相关进程结束后被删除。
摘要由CSDN通过智能技术生成

Linux中unlink函数的使用

在进行unlink这个函数解释之前我们先通过一个测试进行unlink函数的功能的演示,通过程序的输出结果对unlink这个函数功能就大致明白了。

函数原型

int unlink(const char *pathname);  //pathname 待删除的文件名

返回值

成功: 0
失败:-1

unlink函数测试

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main(void)
{
	
	//int unlink(const char *pathname);
	int fd = 0;
	char w_buf[24] = "Hello Linux";
	char r_buf[24];
	
	fd = open("test.txt", O_RDWR | O_TRUNC | O_CREAT, 0664);
	if(fd == -1)
	{
		printf("open [test.txt] error\r\n");
	}
	
	//先删除test.txt文件
	if((unlink("test.txt")) == -1)
	{
		printf("unlink [test.txt] error\r\n");
	}
	
	//写入数据
	write(fd,w_buf,sizeof(w_buf));
	//将文件符一直开头
	lseek(fd,0,SEEK_SET);
	//进行数据的读取
	memset(r_buf,'\0',sizeof(r_buf));
	read(fd,r_buf,sizeof(r_buf));
	//信息输出
	printf("r_buf[%s]\r\n",r_buf);
	return 0;
}

运行结果
在这里插入图片描述

unlink 函数使用总结

通过上述的结果可能大家看出来了,执行unlink()函数并不一定会真正的删除文件,它先会检查文件系统中此文件的连接数是否为1,如果不是1说明此文件还有其他链接对象,因此只对此文件的连接数进行减1操作。若连接数为1,并且在此时没有任何进程打开该文件,此内容才会真正地被删除掉。在有进程打开此文件的情况下,则暂时不会删除,直到所有打开该文件的进程都结束时文件就会被删除。这也是为什么在输出的结果中r_buf依然有数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小殷学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值