Laut Handbuch von proc kann man die Änderungen des Einhängepunktes im Linux-System überwachen, indem man "/ proc / mounts" öffnet und den Dateideskriptor zum Lesen von fd_set
in select()
call hinzufügt.
Das folgende Code-Stück funktioniert auf Ubuntu 9.04 und nicht in Ubuntu 10.04 (mit 2.6.32 Linux Kernel):
%Vor%Der Dateideskriptor ist immer in einer Maschine lesbar und erscheint daher immer im Select-Call. Auch bei mounts gibt es keine Änderungen.
Fehle ich hier etwas?
Vielen Dank im Voraus für jede Hilfe!
/ proc / [pid] / mounts (seit Linux 2.4.19)
Dies ist eine Liste aller Dateisysteme, die derzeit im Mount-Namespace des Prozesses eingebunden sind. Das Format dieser Datei ist in fstab (5) dokumentiert. Seit der Kernel-Version 2.6.15 ist diese Datei abfragbar: Nach dem Öffnen der Datei zum Lesen bewirkt eine Änderung in dieser Datei (dh ein Dateisystem-Mount oder Unmount), dass select (2) den Dateideskriptor als lesbar markiert und abfragt ( 2) und epoll_wait (2) markieren die Datei als fehlerhaft.
Die Dokumentation, auf die Sie verwiesen haben, ist nicht korrekt. Um bei Mount-Änderungen mit select()
zu warten, sollte der Dateideskriptor /proc/mounts
oder /proc/pid/mounts
in exceptfds , nicht readfds gesetzt werden. Tauschen Sie einfach das 2. und 4. Argument in Ihrem Programm. Datei-Deskriptoren, die regulären Dateien zugeordnet sind, müssen von POSIX immer lesbar sein.
Tags und Links c linux filesystems mount procfs