Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File 如何确保进程只在文件整体可用时读取文件?_File_Unix_Synchronization_Cp_Mv - Fatal编程技术网

File 如何确保进程只在文件整体可用时读取文件?

File 如何确保进程只在文件整体可用时读取文件?,file,unix,synchronization,cp,mv,File,Unix,Synchronization,Cp,Mv,我有以下要求 一个进程(进程1)从数据库中读取、获取文件并将检索到的文件放在location/process1/data中;并最终将文件放在/application/shared_数据中 第二个进程(进程2)将检查共享目录/应用程序/共享数据中的数据 这两个过程连续运行,彼此独立 当Process-1放置文件时,比如说1.zip from/process1/data to/application/shared_data;可能的情况是,process-2同时尝试读取该时刻本身的文件;那么我们怎样才

我有以下要求

一个进程(进程1)从数据库中读取、获取文件并将检索到的文件放在location/process1/data中;并最终将文件放在/application/shared_数据中

第二个进程(进程2)将检查共享目录/应用程序/共享数据中的数据

这两个过程连续运行,彼此独立

当Process-1放置文件时,比如说1.zip from/process1/data to/application/shared_data;可能的情况是,process-2同时尝试读取该时刻本身的文件;那么我们怎样才能防止这种情况呢

也就是说,只有当process-1将文件完全放置在共享目录中时,process-2才应该读取给定的文件

谢谢你的帮助

问候,,
Vipin

让两个进程相互发送消息,或者先将文件放在临时名称下(在目标目录中),然后将其移动到最终位置。POSIX保证移动文件是一个原子操作

例如


我在shell脚本中使用它;那么mv是否达到了目的?mv是原子的吗?@vipinkoul:是的,如果文件在同一个目录中。(或至少在同一装入点。)
temp=$(mktemp $(dirname $target).XXXXXX)
cp "$source" "$temp"
mv "$temp" "$target"