times(2) System Calls Manual times(2) BEZEICHNUNG times - Abfrage der Prozesszeiten BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include clock_t times(struct tms *Puffer); BESCHREIBUNG times() speichert die aktuellen Prozesszeiten in der Struktur tms, auf die Puffer weist. Die tms-Struktur wird in wie folgt definiert: struct tms { clock_t tms_utime; /* Benutzer-Zeit */ clock_t tms_stime; /* System-Zeit */ clock_t tms_cutime; /* Benutzer-Zeit der Kindprozesse */ clock_t tms_cstime; /* System-Zeit der Kindprozesse */ }; Das Feld tms_utime enthalt die CPU-Zeit, die mit dem Ausfuhren von Anweisungen des aufrufenden Prozesses verbracht wurde. Das Feld tms_stime enthalt die im Kernel verbrachte CPU-Zeit wahrend der Ausfuhrung von Aufgaben im Namen des aufrufenden Prozesses. Das Feld tms_cutime enthalt die Summe der tms_utime- und tms_cutime -Werte fur alle Kindprozesse, auf deren Abschluss gewartet wurde. Das Feld tms_cstime enthalt die Summe der tms_stime- und tms_cstime-Werte fur alle Kindprozesse, auf deren Abschluss gewartet wurde. Zeiten fur beendete Kindprozesse (und ihre Nachkommen) werden in dem Moment hinzugefugt, wenn wait(2) oder waitpid(2) deren Prozesskennung zuruckgeben. Insbesondere werden die Zeiten der Enkel, auf die die Kinder nicht gewarten haben, nicht erfasst. Alle Zeiten werden in Uhrticks angegeben. RUCKGABEWERT times() gibt die Zahl der Ticks an, die seit einem beliebigen Punkt in der Vergangenheit abgelaufen sind. Der Ruckgabewert kann den moglichen Bereich von Typ clock_t uberlaufen. Tritt ein Fehler auf, wird (clock_t) -1 zuruckgegeben und errno gesetzt, um den Fehler anzuzeigen. FEHLER EFAULT tms zeigt ausserhalb des adressierbaren Adressraums des Prozesses. VERSIONEN Unter Linux kann das Argument Puffer als NULL angegeben werden, worauf times() nur ein Funktionsergebnis zuruckgibt. Dieses Verhalten wird aber nicht von POSIX beschrieben und die meisten UNIX-Implementierungen erfordern einen von NULL verschiedenen Wert fur Puffer. STANDARDS POSIX.1-2008. GESCHICHTE POSIX.1-2001, SVr4, 4.3BSD. In POSIX.1-1996 wird das Symbol CLK_TCK (definiert in ) als veraltet erwahnt. Es ist jetzt uberholt. Falls in Linux-Versionen vor 2.6.9 SIGCHLD SIG_IGN zugeordnet ist, werden die Zeiten der beendeten Kindprozesse automatisch in den Feldern tms_cstime und tms_cutime eingetragen, obwohl POSIX.1-2001 sagt, dass dies nur geschehen soll, wenn der aufrufende Prozess (mit wait(2)) auf seine Kindprozesse wartet. Diese Nichtubereinstimmung wurde in Linux 2.6.9 und spater behoben. Unter Linux hat sich der >>beliebige Punkt in der Vergangenheit<<, auf den sich der Ruckgabewert von times() bezieht, uber die Kernel-Versionen geandert. Unter Linux 2.4 und fruher war dieser Punkt der Moment, an dem das System gestartet wurde. Seit Linux 2.6 ist dieser Punkt (2^32/HZ) - 300 Sekunden vor Systemstart. Diese Variabilitat zwischen Kernel-Versionen (und uber UNIX-Implementierungen) und die Tatsache, dass der Ruckgabewert den Bereich clock_t uberlaufen lassen kann, bedeutet, dass eine portable Anwendung klug daran tut, diesen Wert nicht zu verwenden. Um Anderungen der verstrichenen Zeit zu messen, verwenden Sie stattdessen clock_gettime(2). SVr1-3 gibt long zuruck und Bestandteile der Struktur sind vom Typ time_t, obwohl sie Uhrticks speichern und nicht Sekunden seit dem Beginn der Unix-Zeit. V7 verwendete long fur die Bestandteile der Struktur, weil es damals noch keinen Typ time_t gab. ANMERKUNGEN Die Zahl der Uhrticks pro Sekunde kann wie folgt bestimmt werden: sysconf(_SC_CLK_TCK); Beachten Sie, dass auch clock(3) einen Wert vom Typ clock_t zuruckgibt. Die Masseinheit fur diesen Wert ist CLOCKS_PER_SEC, nicht die von times() verwendeten Uhrticks. FEHLER Eine Beschrankung in den Linux-Konventionen fur Systemaufrufe fur einige Architekturen (insbesondere i386) bewirkt unter Linux 2.6 ein kleines Zeitfenster (41 Sekunden) kurz nach dem Systemstart, in dem times() -1 zuruckgeben und damit falschlicherweise anzeigen kann, dass ein Fehler auftrat. Dasselbe Problem kann auftreten, wenn der Ruckgabewert den grossten in clock_t speicherbaren Wert uberschreitet. SIEHE AUCH time(1), getrusage(2), wait(2), clock(3), sysconf(3), time(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Ralf Demmer , Martin Eberhard Schauer und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.9.1 2. Mai 2024 times(2)