ファイルロックに関してです。
2つのプロセスを走らせて、プロセスAで
$fp=fopen("A.txt","r+");
flock($fp,LOCK_SH);
ftruncate($fp,0);//←ここでファイルサイズが0になる
fseek($fp,0);
fwrite($fp,"あいうえお");
fclose($fp);
と言う処理をusleep(200000);で0.2秒sleepさせながら実行し
もう片方のプロセスBは
$fp=fopen("A.txt","r+");
fgets($fp);
fclose($fp);
という普通のファイル読取処理を0.1秒間隔で実行し、fopenが成功したか、fgetsが成功したかを順次表示させています
clearstatcacheは毎回しています。

プロセスAだけであればあいうえおという文章が書き込まれるのですが
プロセスBを同時に走らせるとプロセスAのfwriteで0が返ってきて書き込みに失敗し、ファイルサイズが0になってしまいます。
この原因も知りたいのですが、ファイルロックについて詳しく知りたいです。

LOCK_SH、LOCK_EXそれぞれの場合、そのロックを行い
別プロセスでfopen、fgets、fclose、filesizeの様なファイルに関係有る処理を行った場合、どうなるのが仕様なのでしょうか。
ロックされているファイルに対してプロセスBでfopenを行った場合、プロセスAでロックが解除されるまでプロセスBは待機されるのかと思ったのですが
そうはなりませんでした。