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.
[c++] sprawdzanie czy jakiś proces korzysta z pliku
- el.pescado
- 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
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.
-
- 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
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.
Ponieważ głównie chodziło mi o procesy należące do tego samego projektu postanowiłem użyć po prostu file locks.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości