0

in Linux-Systemaufruf Schicht zu verfolgen, wie in Linux-Kernel-Systemaufruf Schicht Attributänderungen zu verfolgen.Wie Attributänderungen der Datei

Erstellen Sie einen Dateinamen als test.txt

Touch test.txt -> In diesem Fall Zugriffszeit geändert wurde. Im VFS-Layer kann dies mit "setattr" verfolgt werden, aber wie kann dies in sys call layer verfolgt werden?

+0

Ein anderer Ansatz wäre, den Kernel vermeiden und verwenden [inotify (7)] (http://man7.org/linux/man-pages/man7/inotify.7.html) Einrichtungen in Benutzern Land. –

+0

Ja stimmt .. aber wollte im Kernel –

Antwort

0

Die Funktion utimensat() wird durch Berührung verwendet, das zu tun. Sie können es mit "strace touch test.txt" verfolgen. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/touch.html http://pubs.opengroup.org/onlinepubs/9699919799/functions/utimensat.html

Alle write() oder gelesen() Systemaufrufe werden die Zugriffszeit ändern (wenn die Mount-Optionen es nicht verhindern).

Außerhalb der direkten Manipulation der Zugriffszeit durch expliziten Systemaufruf wie "touch" do, verwendet der Linux-Kernel die Regeln, die von den atime-Mounting-Optionen des Dateisystems definiert werden, wann die Zugriffszeit geändert wird. Suchen Sie nach dem Wort "atime" in der Mount-Handbuchseite, um die Details der Regeln zu sehen.

Ein Blick auf fs/utimes.c könnte helfen, die Systemaufrufe in atime Modifikation beteiligt zu verstehen.

+0

Dies ist nicht spezifisch zu berühren und Modifikation wie echo „Hallo“> test.txt die sys nennen es geht durch erkunden .. das Dateiattribut zu ändern, wie in VFS geht es über setattr VFS Anruf. –

+0

Sie haben speziell nach dem Berührungsbeispiel und der Systemaufrufschicht des Linux-Kernels gefragt. – jcamdr

+0

Nein. Seine allgemeine Einstellung des Dateiattributs wird über welchen Systemaufruf im Kernel aktualisiert? –