[c++] sprawdzanie czy jakiś proces korzysta z pliku

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
psysiu
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 30 wrz 2008, 09:22
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

[c++] sprawdzanie czy jakiś proces korzysta z pliku

Post autor: psysiu »

witam,
jak w temacie, chciałbym sprawdzić z poziomu języka C/C++ czy jakiś proces korzysta (czyta/zapisuje) z pliku.
Wdzięczny za każdą pomoc.
Awatar użytkownika
el.pescado
Zakręcona Traszka
Zakręcona Traszka
Posty: 734
Rejestracja: 26 maja 2005, 11:43
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86
Kontakt:

Odp: [c++] sprawdzanie czy jakiś proces korzysta z pliku

Post autor: el.pescado »

Sprawdzić, czy czyta lub zapisuje jest trochę trudno, ale bardzo prosto można sprawdzić, czy proces ma otwarty plik (co jest warunkiem jego czytania/zapisywania do niego). Wystarczy przejrzeć katalog /proc/PID/fd, gdzie znajdują się dowiązania symboliczne (do odczytania na co wskazuje dowiązanie symboliczne można wykorzystać funkcję readlink(2)) do plików otwartych przez proces, indeksowane przez numery deskryptorów plików. PID to oczywiście numer procesu.
psysiu
Piegowaty Guziec
Piegowaty Guziec
Posty: 6
Rejestracja: 30 wrz 2008, 09:22
Płeć: Mężczyzna
Wersja Ubuntu: 8.10
Środowisko graficzne: GNOME

Odp: [c++] sprawdzanie czy jakiś proces korzysta z pliku

Post autor: psysiu »

Inna możliwość to poszukanie odpowiedzi w kodzie źródłowym lsof, ale mnie to trochę przytłoczyło.
Ponieważ głównie chodziło mi o procesy należące do tego samego projektu postanowiłem użyć po prostu file locks.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości