マニュアルページcp(1)
説明する
--no-clobber
既存のファイルを上書きしないでください
ところで、以下のような状況が可能でしょうか?
cp
ファイルがすでに存在しないとし、ファイルが存在することを確認します。- 他のプロセスが同じパスに書き込むため、以前は存在しなかったファイルにデータが書き込まれます。
cp
現在のファイルが存在するかどうかわからないため、データを上書きします。
cp --no-clobber
この競争条件に脆弱ですか?そうでなければ、cp
上記の状況を避ける方法は何ですか?
ベストアンサー1
cp
そのような競争条件に脆弱ではありません。設定されている場合は--no-clobber
、ターゲットがすでに存在することを確認し、存在しないためコピーを続ける必要があると判断した場合は、新しいファイルにコピーする必要があることを覚えておいてください。ターゲットファイルを開く必要がある場合、生成を強制するフラグで開きます。、O_CREAT
そしてO_EXCL
;その後、オペレーティングシステムはファイルが存在しないことを確認します。それを開くときEEXIST
、成功すると失敗します()。