.\" -*- coding: UTF-8 -*- '\" t .\" Copyright, the authors of the Linux man-pages project .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH utimensat 2 "29. oktober 2025" "Linux man\-pages 6.17" .SH NAVN utimensat, futimens \- ændr filtidsstempler med nanosekund præcision .SH BIBLIOTEK C\-standardbibliotek (\fIlibc\fP,\ \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP /* Definition af \fBAT_*\fP\-konstanter */ \fB#include \fP .P \fBint utimensat(int \fP\fIdirfd\fP\fB, const char *\fP\fIsti\fP\fB,\fP \fB const struct timespec \fP\fItimes\fP\fB[_Nullable 2], int \fP\fIflag\fP\fB);\fP \fBint futimens(int \fP\fIfd\fP\fB, const struct timespec \fP\fItimes\fP\fB[_Nullable 2]);\fP .fi .P .RS -4 Feature Test Macro Requirements for glibc (se \fBfeature_test_macros\fP(7)): .RE .P \fButimensat\fP(): .nf Siden glibc 2.10: _POSIX_C_SOURCE >= 200809L Før glibc 2.10: _ATFILE_SOURCE .fi .P \fBfutimens\fP(): .nf Siden glibc 2.10: _POSIX_C_SOURCE >= 200809L Før glibc 2.10: _GNU_SOURCE .fi .SH BESKRIVELSE \fButimensat\fP() og \fBfutimens\fP() opdaterer tidsstemplerne for en fil med nanosekund præcision. Dette er i kontrast til den historiske \fButime\fP(2) og \fButimes\fP(2), der kun tillader sekund og mikrosekund præcision, respektivt, når filtidsstempler angives. .P Med \fButimensat\fP() er filen angivet via stinavnet i \fIsti\fP. Med \fBfutimens\fP() er filen hvis tidsstempler skal opdateres angivet via en åben fildeskriptor, \fIfd\fP. .P For begge kald, er de nye filtidsstempler angivet i tabellen \fItimes\fP: \fItimes[0]\fP angiver den nye »sidst tilgået« (\fIatime\fP); \fItimes[1]\fP angiver den »sidst ændret« (\fImtime\fP). Hver af elementerne i \fItimes\fP angiver et tidspunt som antallet af sekunder og nanosekunder siden Epoch, 1970\-01\-01 00:00:00 +0000 (UTC). Denne information er formidlet i en \fBtimespec\fP(3)\-struktur. .P Opdaterede filtidsstempler angives til den største værdi understøttet af filsystemet, der ikke er højere end det angivne tidspunkt. .P .\" 2.6.22 was broken: it is not ignored Hvis feltet \fItv_nsec\fP for en af \fItimespec\fP\-strukturerne har den specielle værdi \fBUTIME_NOW\fP, så er det tilsvarende filtidsstempel angivet til den aktuelle tid. Hvis feltet \fItv_nsec\fP for en af \fItimespec\fP\-strukturerne har den specielle værdi \fBUTIME_OMIT\fP, så efterlades det tilsvarende filtidsstempel uændret. I begge disse tilfæde bliver værdien for det tilsvarende \fItv_sec\fP\-felt ignoreret. .P .\" Hvis \fItimes\fP er NULL, så angives begge tidsstempler til den aktuelle tid. .P Statusændringstidspunktet (ctime) vil blive angivet til den aktuelle tid, selv om andre tidsstempler ikke ændrer sig. .SS Rettighedskrav For at angive begge filtidsstempler til den aktuelle tid (dvs., \fItimes\fP er NULL, eller begge \fItv_nsec\fP\-fetler angiver \fBUTIME_NOW\fP), enten: .IP \[bu] 3 .\" 2.6.22 was broken here -- for futimens() the check is .\" based on whether or not the file descriptor is writable, .\" not on whether the caller's effective UID has write .\" permission for the file referred to by the descriptor. kalderen skal have skriveadgang til filen; .IP \[bu] kalderens effektive bruger\-id skal matche ejeren af filen; eller .IP \[bu] kalderen skal have passene privilegier. .P .\" 2.6.22 was broken here: .\" both must be something other than *either* UTIME_OMIT *or* UTIME_NOW. For at lave en ændring udover angivelse af begge tidsstempler til den aktuelle tid (dvs., \fItimes\fP er ikke NULL, og intet \fItv_nsec\fP\-felt er \fBUTIME_NOW\fP og intet \fItv_nsec\fP\-felt er \fBUTIME_OMIT\fP), enten betingelse 2 eller 3 ovenfor skal gælde. .P .\" .\" Hvis begge \fItv_nsec\fP\-felter er angivet som \fBUTIME_OMIT\fP, så udføres der ingen tjek for filejerskab eller rettighed og filtidsstemplerne bliver ikke ændret, men andre fejlbetingelser kan stadig registreres. .SS "utimensat() detaljer" Hvis \fIsti\fP er relativ, så fortolkes det som standard relativt til mappen refereret til af den åbne fildeskriptor, \fIdirfd\fP (frem for relativt til den nuværende arbejdsmappe for den kaldende proces, som det gøres af \fButimes\fP(2) for et relativt stinavn). Se \fBopenat\fP(2) for en forklaring af hvorfor dette kan være nyttigt. .P Hvis \fIsti\fP er relativ og \fIdirfd\fP er den specielle værdi \fBAT_FDCWD\fP, så fortolkes \fIsti\fP relativt til den nuværende arbejsmapppe for den kaldende proces (som \fButimes\fP(2)). .P Hvis \fIsti\fP er forældet, så ignoreres \fIdirfd\fP. .P Argumentet \fIflag\fP er en bit\-maske oprettet af ORing together zero eller flere af de følgende værdier defineret i \fI\fP: .TP \fBAT_EMPTY_PATH\fP (siden Linux 5.8) Hvis \fIsti\fP er en tom streng, arbejd på filen refereret til af \fIdirfd\fP (der kan være indhentet via \fBopen\fP(2) \fBO_PATH\fP\-flaget). I dette tilfælde kan \fIdirfd\fP referere til enhver filtype, ikke kun en mappe. Hvis \fIdirfd\fP er \fBAT_FDCWD\fP fungerer kaldet på den nuværende arbejdsmappe. Dette er flag er specifikt for Linux; definer \fB_GNU_SOURCE\fP for at hente dets definition. .TP \fBAT_SYMLINK_NOFOLLOW\fP Hvis \fIsti\fP angiver en symbolsk henvisning, så opdater tidsstemplerne for henvisningen, frem for filen hvortil der refereres. .SH RETURVÆRDI Ved succes returnerer \fButimensat\fP() og \fBfutimens\fP() 0. Ved fejl returneres \-1 og \fIerrno\fP angives for at indikere fejlen. .SH FEJL .TP \fBEACCES\fP .\" But Linux 2.6.22 was broken here. .\" Traditionally, utime()/utimes() gives the error EACCES for the case .\" where the timestamp pointer argument is NULL (i.e., set both timestamps .\" to the current time), and the file is owned by a user other than the .\" effective UID of the caller, and the file is not writable by the .\" effective UID of the program. utimensat() also gives this error in the .\" same case. However, in the same circumstances, when utimensat() is .\" given a 'times' array in which both tv_nsec fields are UTIME_NOW, which .\" provides equivalent functionality to specifying 'times' as NULL, the .\" call succeeds. It should fail with the error EACCES in this case. .\" .\" POSIX.1-2008 has the following: .\" .TP .\" .B EACCES .\" .RB ( utimensat ()) .\" .I fd .\" was not opened with .\" .B O_SEARCH .\" and the permissions of the directory to which .\" .I fd .\" refers do not allow searches. .\" EXT2_IMMUTABLE_FL and similar flags for other filesystems. \fItimes\fP er NULL, eller begge \fItv_nsec\fP\-værdier er \fBUTIME_NOW\fP, og det effektive bruger\-id for kalderen matcher ikke ejeren af filen, kalderen skal ikke have skriveadgang til filen og kalderen er ikke privilegeret (Linux: har hverken kapaciteten \fBCAP_FOWNER\fP eller \fBCAP_DAC_OVERRIDE\fP). .TP \fBEBADF\fP (\fBfutimens\fP()) \fIfd\fP er ikke en gyldig fildeskriptor. .TP \fBEBADF\fP \fButimensat\fP()) \fIsti\fP er relativ men \fIdirfd\fP er ingen \fBAT_FDCWD\fP eller en gyldig fildeskriptor. .TP \fBEFAULT\fP \fItimes\fP pegede mod en ugyldig adresse; eller, \fIdirfd\fP var \fBAT_FDCWD\fP, og \fIsti\fP er NULL eller en ugyldig adresse.. .TP \fBEINVAL\fP Ugyldig værdi i \fIflag\fP. .TP \fBEINVAL\fP Ugyldig værdi i et af \fItv_nsec\fP\-felterne (værdi uden for interval [0, 999,999,999], og ikke \fBUTIME_NOW\fP eller \fBUTIME_OMIT\fP); eller en ugyldig værdi i et af \fItv_sec\fP\-felterne. .TP \fBEINVAL\fP .\" SUSv4 does not specify this error. \fIpath\fP er NULL, \fIdirfd\fP er ikke \fBAT_FDCWD\fP, og \fIflag\fP indeholder \fBAT_SYMLINK_NOFOLLOW\fP. .TP \fBELOOP\fP (\fButimensat\fP()) For mange symbolske henvisninger blev mødt under opslag af \fIsti\fP. .TP \fBENAMETOOLONG\fP (\fButimensat\fP()) \fIsti\fP er for lang. .TP \fBENOENT\fP (\fButimensat\fP()) En komponent i \fIsti\fP refererer ikke til en eksisterende mappe eller fil, eller \fIsti\fP er ikke en tom streng. .TP \fBENOTDIR\fP (\fButimensat\fP()) \fIsti\fP er relativ, men \fIdirfd\fP er ingen \fBAT_FDCWD\fP eller en fildeskriptor refererende til en mappe; eller, en af præfikskomponenterne for \fIsti\fP er ikke en mappe. .TP \fBEPERM\fP Kalderen forsøgte at ændre en eller begge tidsstempler til en værdi anderledes end den nuværende tid, eller til at ændre en af tidsstemplerne til den nuværende tid, mens det andet tidsstempel efterlades uændret (dvs. \fItimes\fP er ikke NULL; intet \fItv_nsec\fP\-felt er \fBUTIME_NOW\fP, og intet \fItv_nsec\fP\-felt er \fBUTIME_OMIT\fP) og enten: .RS .IP \[bu] 3 kalderens effektive bruger\-id matcher ikke filejeren og kalderen er ikke privilegeret (Linux: har ikke kapaciteten \fBCAP_FOWNER\fP); eller, .IP \[bu] .\" Linux 2.6.22 was broken here: .\" it was not consistent with the old utimes() implementation, .\" since the case when both tv_nsec fields are UTIME_NOW, was not .\" treated like the (times == NULL) case. .\" EXT2_IMMUTABLE_FL EXT_APPEND_FL and similar flags for .\" other filesystems. .\" .\" Why the inconsistency (which is described under NOTES) between .\" EACCES and EPERM, where only EPERM tests for append-only. .\" (This was also so for the older utimes() implementation.) filen er markeret tilføj\-kun eller uforanderlig (se \fBchattr\fP(1)). .RE .TP \fBEROFS\fP Filen er på et skrivebeskyttet filsystem. .TP \fBESRCH\fP (\fButimensat\fP()) Søgetilladelse er nægtet for en af præfikskomponenterne i \fIsti\fP. .SH ATTRIBUTTER For en forklaring på betingelserne i dette afsnit, se \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Grænseflade Attribut Værdi T{ .na .nh \fButimensat\fP(), \fBfutimens\fP() T} Trådsikkerhed MT\-Safe .TE .SH VERSIONER .SS "ABI\-forskelle for C\-bibliotek/kerne" På Linux er \fBfutimens\fP() en biblioteksfunktion implementeret oven på systemkaldet \fButimensat\fP(). For at understøtte dette implementerer Linux\-systemkaldet \fButimensat\fP() en funktion uden for standarden: hvis \fIsti\fP er NULL, så ændrer kaldet tidstemplerne for filen refereret til af fildeskriptoren \fIdirfd\fP (der kan referere til enhver filtype). Med brug af denne funktion bliver kaldet \fIfutimens(fd,\ times)\fP implementeret som: .P .in +4n .EX utimensat(fd, NULL, times, 0); .EE .in .P Bemærk dog, at glibc\-omslaget for \fButimensat\fP() ikke tillader at sende NULL som værdien for \fIsti\fP: omslagsfunktionen returnerer i dette tilfælde fejlen \fBEINVAL\fP. .SH STANDARDER POSIX.1\-2024. .SH HISTORIK .TP \fButimensat\fP() Linux 2.6.22, glibc 2.6. POSIX.1\-2008. .TP \fBfutimens\fP() glibc 2.6. POSIX.1\-2008. .SH NOTER \fButimensat\fP() gør \fBfutimesat\fP(2) forældet. .P På Linux kan tidsstempler ikke ændret for en fil, der er markeret uforanderlig, og den eneste ændring tilladt for filer markeret tilføj\-kun er at angive tidsstemplerne til den aktuelle tid. (Dette er konsistent med den historiske opførsel for \fButime\fP(2) og \fButimes\fP(2) på Linux). .P Hvis begge \fItv_nsec\fP\-felter er angivet som \fBUTIME_OMIT\fP, så lykkes Linux\-implementeringen af \fButimensat\fP() selv om filen er refereret til af \fIdirfd\fP og \fIsti\fP ikke findes. .SH FEJL Flere fejl plager \fButimensat\fP() og \fBfutimens\fP() før Linux 2.6.26. Disse fejl er enten manglende overholdelse af POSIX.1\-kladdespecifikationen eller inkonsistens med historisk Linux\-opførsel. .IP \[bu] 3 POSIX.1 nagiver at hvis et af \fItv_nsec\fP\-felterne har værdien \fBUTIME_NOW\fP eller \fBUTIME_OMIT\fP, så skal værdien for det tilsvarende \fItv_sec\fP\-felt ignoreres. I stedet er det krævet at værdien af \fItv_sec\fP\-feltet er 0 (eller at fejlen \fBEINVAL\fP følger). .IP \[bu] .\" Below, the long description of the errors from the previous bullet .\" point (abridged because it's too much detail for a man page). .\" .IP \[bu] .\" If one of the .\" .I tv_nsec .\" fields is .\" .BR UTIME_OMIT .\" and the other is .\" .BR UTIME_NOW , .\" then the error .\" .B EPERM .\" should occur if the process's effective user ID does not match .\" the file owner and the process is not privileged. .\" Instead, the call successfully changes one of the timestamps. .\" .IP \[bu] .\" If file is not writable by the effective user ID of the process and .\" the process's effective user ID does not match the file owner and .\" the process is not privileged, .\" and .\" .I times .\" is NULL, then the error .\" .B EACCES .\" results. .\" This error should also occur if .\" .I times .\" points to an array of structures in which both .\" .I tv_nsec .\" fields are .\" .BR UTIME_NOW . .\" Instead the call succeeds. .\" .IP \[bu] .\" If a file is marked as append-only (see .\" .BR chattr (1)), .\" then Linux traditionally .\" (i.e., .\" .BR utime (2), .\" .BR utimes (2)), .\" permits a NULL .\" .I times .\" argument to be used in order to update both timestamps to the current time. .\" For consistency, .\" .BR utimensat () .\" and .\" .BR futimens () .\" should also produce the same result when given a .\" .I times .\" argument that points to an array of structures in which both .\" .I tv_nsec .\" fields are .\" .BR UTIME_NOW . .\" Instead, the call fails with the error .\" .BR EPERM . .\" .IP \[bu] .\" If a file is marked as immutable (see .\" .BR chattr (1)), .\" then Linux traditionally .\" (i.e., .\" .BR utime (2), .\" .BR utimes (2)), .\" gives an .\" .B EACCES .\" error if .\" .I times .\" is NULL. .\" For consistency, .\" .BR utimensat () .\" and .\" .BR futimens () .\" should also produce the same result when given a .\" .I times .\" that points to an array of structures in which both .\" .I tv_nsec .\" fields are .\" .BR UTIME_NOW . .\" Instead, the call fails with the error .\" .BR EPERM . Diverse fejl betyder i forhold til rettighedskontrol at i tilfældet hvor begge \fItv_nsec\fP\-felter er angivet til \fBUTIME_NOW\fP, så behandles det ikke altid som at angive \fItimes\fP som NULL, og tilfældet hvor en \fItv_nsec\fP\-værdi er \fBUTIME_NOW\fP og den anden er \fBUTIME_OMIT\fP behandles ikke på samme måde som at angive \fItimes\fP som en tekstsøger til en strukturtabel indeholdende arbitrære tidsværdier. Som et resutlat, i nogle tilfælde: a) filtidsstempler kan opdateres af en proces, der ikke burde have rettighed til at udføre opdateringer; b) filstempler kan ikke opdateres af en proces, der burde have rettighed til at udføre opdateirnger; og c) den forkerte \fIerrno\fP\-værdi returneres i tilfælde af en fejl. .IP \[bu] .\" This means that a process with a file descriptor that allows .\" writing could change the timestamps of a file for which it .\" does not have write permission; .\" conversely, a process with a read-only file descriptor won't .\" be able to update the timestamps of a file, .\" even if it has write permission on the file. POSIX.1 siger at en proces, der har \fIskriveadgang til filen\fP kan lave et kald med \fItimes\fP som NULL, eller med \fItimes\fP pegende til en strukturtabel hvori begge \fItv_nsec\fP\-felter er \fBUTIME_NOW\fP, for at opdatere begge tidsstempler til den aktuelle tid. \fBfutimens\fP() tjekker i stedet om \fIadgangstilstanden for fildeskriptoren tillader skrivning\fP. .SH "SE OGSÅ" \fBchattr\fP(1), \fBtouch\fP(1), \fBfutimesat\fP(2), \fBopenat\fP(2), \fBstat\fP(2), \fButimes\fP(2), \fBfutimes\fP(3), \fBtimespec\fP(3), \fBinode\fP(7), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .PP .SH OVERSÆTTELSE Oversættere af denne manual til dansk Joe Hansen . .PP Denne oversættelse er gratis dokumentation; læs .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE eller nyere for ophavsretbetingelser. Der er INGEN ANSVAR. .PP Hvis du støder på fejl i oversættelsen af ​​denne vejledning, skal du sende en besked til .MT debian-l10n-danish@lists.debian.org .ME .