私が実行しているテストで何が起こっているのか分かりにくいです。 Testは、同じマシン上で実行される2つのシェルスクリプトです。ext3のファイル名を変更してPOSIX仕様を破るように見える
A:
#!/bin/bash
touch target;
for ((i=0; i < 1000; i=i+1)); do
echo "snafu$i" > $1/file$i;
mv -f $1/file$i $1/target;
done;
B:
#!/bin/bash
while(true);do
cat $1/target;
done
だから私はB/ext3_dirを実行し、その後、A/ext3_dirを実行します>アウト(これだけのエラーが出てはstdに行きます)。
この「名前の変更」のPOSIX仕様に応じて、予想通り、すべてが正常に動作して:新しい引数で指定されたリンクが存在する場合は
、それが削除され、新しい名前に変更古いされなければなりません。この場合、newという名前のリンクは、名前変更操作を通じて他のプロセスに見えるようにし、操作の開始前にnewまたはoldで参照されるファイルを参照します。 - 一見に違反して
#!/bin/bash touch target; for ((i=0; i < 1000; i=i+1)); do echo "snafu$i" > $1/file$i; ln $1/file$i $1/link$i mv -f $1/file$i $1/target; done;
私は読み出し側の「そのようなファイルまたはディレクトリ」エラーが出るん:私は移動を行う前に、一時ファイルへのハードリンクを追加する場合は
POSIX仕様。
誰でもこの動作を確認できますか?テストは有効ですか?移動するファイルへの余分なリンクを作成すると、移動先から読み取る機能に影響するはずです。
は言っておく必要があります。これはext3ファイルシステム上でRHEL5(2.6.18) –