免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6068 | 回复: 7

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

论坛徽章:
0
发表于 2004-06-15 09:28 |显示全部楼层
即要不然一步也不进行,要不就全进行完?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-06-15 10:06 |显示全部楼层

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

不是。
可以被信号中断。

论坛徽章:
0
发表于 2004-06-15 10:14 |显示全部楼层

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

信号除外

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-06-15 10:24 |显示全部楼层

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

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

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-06-15 10:29 |显示全部楼层

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

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

论坛徽章:
0
发表于 2004-06-16 13:30 |显示全部楼层

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

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

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2004-06-16 14:51 |显示全部楼层

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

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

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

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

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

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,8.5折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时8.5折扣期:2019年9月30日前


----------------------------------------

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP