Próbuję sprawdzić, czy określony plik java.io.ro jest otwarty przez program zewnętrzny. Na oknach I w ten prosty trick:Jak sprawdzić, czy plik jest otwarty przez inny proces (Java/Linux)?
try {
FileOutputStream fos = new FileOutputStream(file);
// -> file was closed
} catch(IOException e) {
// -> file still open
}
wiem, że systemy UNIX pozwalają na otwieranie plików w wielu procesach ... Czy istnieje podobna sztuczka, aby osiągnąć ten sam wynik dla systemów UNIX?
Każda pomoc/siekać ceniona :-)
masz absolutną rację ... ale potrzebuję tej funkcji do monitorowania stanu pliku (co robię z WatchServices w Javie 7). ale muszę też wykryć, kiedy dany plik zostanie ponownie zamknięty, aby go odblokować, aby inni użytkownicy mogli go ponownie edytować. – salocinx
Czy możesz zadzwonić do 'lsof'? – tchrist
To jest następna rzecz, którą spróbuję zrobić. lsof wydaje się istnieć na dość licznych dystrybucjach Linuksa. Otwarcie nowego procesu z lsof i odczytanie standardowego wyjścia wykona zadanie. Przedstawię swoje rozwiązanie jutro w tym wątku. wielkie dzięki! – salocinx