特定のjava.io.Fileが外部プログラムによってオープンされているかどうかを確認しようとしています。 Windowsでは、私はこの単純なトリックを使用します...私は、UNIXベースのシステムでは、複数のプロセスでファイルを開くことが許可されていることを知っているファイルが別のプロセス(Java/Linux)によって開かれているかどうかをチェックする方法は?
try {
FileOutputStream fos = new FileOutputStream(file);
// -> file was closed
} catch(IOException e) {
// -> file still open
}
をUNIXベースのシステムのために同じ結果を達成するために、同様のトリックがありますか?
すべてのヘルプ/高度
あなたは本当に正しいですが、ファイルの状態を監視するにはこの機能が必要です(これはJava 7のWatchServicesで行います)。特定のファイルが再び閉じられたときにそれを検出してロックを解除し、他のユーザーが再びそのファイルを編集できるようにする必要があります。 – salocinx
'lsof'を呼び出せますか? – tchrist
これは私がやろうとしている次のものです。 lsofは非常に多くのLinuxディストリビューションに存在するようです。 lsofで新しいプロセスをオープンし、標準出力を読み出すと、その作業が行われます。私は明日このスレッドで私のソリューションを提示します。今までありがとう! – salocinx