我无法通过实验来判断这一点,也无法从手册页中收集它.

假设我有两个进程,一个进程将file1从directory1移动(重命名)到directory2.假设另一个进程同时运行,将directory1和directory2的内容复制到另一个位置.复制的方式是否可能使directory1和directory2都显示file1,即directory1在移动前复制,directory2在移动后由第一个进程复制.

基本上是rename()是一个原子系统调用吗?

谢谢

推荐答案

是和否.

rename()是原子的,前提是操作系统不会崩溃.它不能被任何其他文件系统操作拆分.

如果系统崩溃,您可能会看到一个ln()操作.

另外请注意,在网络文件系统上操作时,如果操作成功,您可能会得到eOne.本地文件系统不能这样对你.

Linux相关问答推荐

AWK+向AWK导出值未传递

C++调试器如何知道如何在源代码和可执行文件之间映射行?

如何判断程序是在终端上运行还是在后台运行?

/proc/mounts 没有像 /proc/self/mountinfo 这样的源信息

如何在 DolphinDB 中递归查找目录中的所有文件?

Google Cloud Ops Agent Mongo 集成错误 - AuthenticationFailed:SCRAM 身份验证失败,storedKey 不匹配

为什么我的 Docker 进程不断在我的 Raspberry Pi 上重新启动?

如何为命令的所有选项启用无密码 sudo?

如何使用 Bash 将随机数据块写入文件

ftell 在文件描述符上?

使用 rc.local 运行脚本:脚本有效,但在启动时无效

size_t 和 off_t 的用法有什么区别?

nvm:无法卸载当前活动的 node 版本

将 $_GET 参数传递给 cron 作业(job)

如何在 Linux 中查找所有以 .rb 结尾的文件?

Pthread mutex互斥断言错误

ldconfig 错误:使用 Linux 加载程序时不是符号链接

linux perf:如何解释和查找热点

如何从目录复制内容而不是符号链接?

如何自动启动 Solr?