免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7159 | 回复: 7
打印 上一主题 下一主题

[函数] 请问unix下的rename函数是原子操作么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-06-15 09:28 |只看该作者 |倒序浏览
即要不然一步也不进行,要不就全进行完?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-06-15 10:06 |只看该作者

请问unix下的rename函数是原子操作么?

不是。
可以被信号中断。

论坛徽章:
0
3 [报告]
发表于 2004-06-15 10:14 |只看该作者

请问unix下的rename函数是原子操作么?

信号除外

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
4 [报告]
发表于 2004-06-15 10:24 |只看该作者

请问unix下的rename函数是原子操作么?

没有信号,整个程序你都可以说是原子操作。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2004-06-15 10:29 |只看该作者

请问unix下的rename函数是原子操作么?

如果你是说rename失败的话,
会不会对修改的目录名或文件名有影响,
请man rename,会给你一个满意的答案。
以后请把问题描述清楚。

论坛徽章:
0
6 [报告]
发表于 2004-06-16 13:30 |只看该作者

请问unix下的rename函数是原子操作么?

不是呀,比如 read就不是原子的,在执行过程中可能被其他操作打断,cpu不可能把时间片都分给read,系统调用本身就存在着可中断的和不可中断的,内核函数也是这样,试想一个等待换页的函数由于其特性,一般是不会被信号中断,我就是看了rename的手册页, 发现她是在libc库里实现的,所以不肯定是否是原子的,甚至有可能这个函数内部本身也block信号,不知道就不咬随便指责别人,至少好好看清楚别人说的在回帖,行么?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2004-06-16 14:51 |只看该作者

请问unix下的rename函数是原子操作么?

[quote]原帖由 "picobsd"]不是呀,比如 read就不是原子的,在执行过程中可能被其他操作打断,cpu不可能把时间片都分给read,系统调用本身就存在着可中断的和不可中断的,内核函数也是这样,试想一个等待换页的函数由于其特性,一般是不会被信..........[/quote 发表:

呵呵,首先向你道歉,我的确错误理解你的意思了。
要说到原子操作,很少的系统调用是原子操作的,
我就只知道一个系统调用是原子操作的。
你man一个系统调用时,如果是原子操作,
应该告诉你的。
还有,我不明白为什么你非要知道rename是不是原子操作?

论坛徽章:
0
8 [报告]
发表于 2015-04-21 17:15 |只看该作者
从操作结果上来讲,RENAME被认为是一个用户级的原子操作:就是对于用户而言,要么这个文件被重命名了,要么就没有,这个是写在磁盘上的,是在系统断电CRASH等极端情况下仍有效的操作。就是说RENAME操作不像其它读写文件系统的操作,可能存在预读缓写等问题。

真正的原子操作,其实是CPU指令级的。RENAME 是一个函数,一个C函数,所以肯这不是。

还有一个问题是:当存在同名的文件或文件夹时,先删除再命名。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP