我有以下要求。
一个进程(进程-1)从DB读取,获取文件并放置检索到的文件,比如位置/进程1 /数据;并最终将文件放在/ application / shared_data
中第二个进程(Process-2)将检查共享目录/ application / shared_data中的数据。
这两个过程连续运行,彼此独立。
当Process-1放置一个文件时,将/ process1 / data中的1.zip称为/ application / shared_data;很可能同时process-2尝试读取那个时刻本身的文件;那么我们怎样才能防止这种情况发生呢。
这是process-2应该读取给定文件,仅当process-1将文件完全放在共享目录中时。
任何帮助表示感谢。
此致 VIPIN
答案 0 :(得分:0)
要么两个进程相互发送消息,要么首先将文件放在临时名称(在目标目录中),然后将其移动到其最终位置。 POSIX保证移动文件是一个原子操作。
E.g。
temp=$(mktemp $(dirname $target).XXXXXX)
cp "$source" "$temp"
mv "$temp" "$target"