linux系统中怎么调用sys_unlink
发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,linux系统中怎么调用sys_unlink,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。sys_unlink是删除硬链接的系统调用,引
千家信息网最后更新 2025年12月05日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安全错误
数据库的锁怎样保障安全
讲述税务身边网络安全故事
单片机烧录软件开发
萧山区社区工作者服务器
网络安全设备是否可以用同一品牌
我的世界服务器改管理员指令
原神米服服务器叫什么
empower显示数据库错误
免费虚拟主机海外服务器
vivo识曲服务器异常
电脑主机变监控服务器
公交系统查询数据库怎么做
国内服务器做棋牌安全吗
中国最大的全文数据库
服务器安全可视可控技术
北京java软件开发国企
广本dms服务器安装
运城市网络安全培训班
智能会员管理软件开发
奉贤区常规软件开发厂家批发价
含羞草app突然服务器繁忙
单片机烧录软件开发
命令行打开服务器管理器页面
金融网络安全保障
数据库开发商
创建数据库ssgl
烟草网络安全宣传周报道
网络安全漫画免费阅读
2022年燃烧远征怀旧服数据库
腾讯群关系数据库
服务器安全狗怎么断开更新