linux系统中怎么调用sys_unlink
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,linux系统中怎么调用sys_unlink,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。sys_unlink是删除硬链接的系统调用,引
千家信息网最后更新 2025年02月02日linux系统中怎么调用sys_unlink
linux系统中怎么调用sys_unlink,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
sys_unlink是删除硬链接的系统调用,引用数为0时底层的文件会被删除sys_unlink是删除硬链接的系统调用,引用数为0时底层的文件会被删除
// 删除硬链接
int sys_unlink(const char * name)
{
const char * basename;
int namelen;
struct m_inode * dir, * inode;
struct buffer_head * bh;
struct dir_entry * de;
// 找出路径的最后一级目录的inode和路径中的文件名
if (!(dir = dir_namei(name,&namelen,&basename)))
return -ENOENT;
// 传进来的路径是一个目录
if (!namelen) {
iput(dir);
return -ENOENT;
}
// 权限
if (!permission(dir,MAY_WRITE)) {
iput(dir);
return -EPERM;
}
// 找到路径对应文件的目录项
bh = find_entry(&dir,basename,namelen,&de);
// 不存在
if (!bh) {
iput(dir);
return -ENOENT;
}
// 读取目录项对应的inode节点
if (!(inode = iget(dir->i_dev, de->inode))) {
iput(dir);
brelse(bh);
return -ENOENT;
}
// 权限
if ((dir->i_mode & S_ISVTX) && !suser() &&
current->euid != inode->i_uid &&
current->euid != dir->i_uid) {
iput(dir);
iput(inode);
brelse(bh);
return -EPERM;
}
// 硬链接不能是目录
if (S_ISDIR(inode->i_mode)) {
iput(inode);
iput(dir);
brelse(bh);
return -EPERM;
}
// 没进程引用该inode
if (!inode->i_nlinks) {
printk("Deleting nonexistent file (x:%d), %d\n",
inode->i_dev,inode->i_num,inode->i_nlinks);
inode->i_nlinks=1;
}
// 解除了引用,inode置为0
de->inode = 0;
// 需要回写硬盘
bh->b_dirt = 1;
brelse(bh);
// 引用数减一,在iput中会删除引用数为0的文件
inode->i_nlinks--;
inode->i_dirt = 1;
inode->i_ctime = CURRENT_TIME;
iput(inode);
iput(dir);
return 0;
}
看完上述内容,你们掌握linux系统中怎么调用sys_unlink的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
文件
目录
系统
路径
链接
内容
底层
方法
更多
权限
问题
束手无策
为此
原因
对此
技能
文件名
硬盘
篇文章
经验
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库具体的数据单元
重庆苹果软件开发收费多少
怎样使用腾讯的云服务器
丽江深圳网络安全培训哪家好
网络安全质量管理制度
市委保密网络技术中心
服务器虚拟化双机
乌鲁木齐软件开发怎么选
网络安全与应急演练
服务器做什么好
数据库整改报告如何写
渠道服务器
网络技术核心知识
计算机网络技术学生的自我介绍
软件开发合阶段关系
3d建模属于软件开发吗
广东电力卫星授时服务器云主机
阜阳市图书馆特色古籍数据库
孤儿病数据库
计算机网络安全实验总结心得
陌陌版烈焰之刃服务器端
公司私有云数据库
网络安全上机试题
数据库 坐标设计
云服务器及自建服务器的区别
土豆服务器的梗
数据库同步软件开发
分布式数据库是怎么出现的
沄游网络技术有限公司
魔兽世界9.1部落服务器