الاسم
- Provided by: manpages-ar-dev (Version: 4.31.0-1)
- Source: manpages-l10n
- Report a bug
مكتبة سي المعيارية (libc، -lc)
#include <fcntl.h> /* تعريف ثوابت AT_* */ #include <sys/stat.h>
int utimensat(int dirfd, const char *path,
const struct timespec times[_Nullable 2], int flags);
int futimens(int fd, const struct timespec times[_Nullable 2]);
utimensat():
منذ glibc 2.10:
_POSIX_C_SOURCE >= 200809L
قبل glibc 2.10:
_ATFILE_SOURCE
futimens():
منذ glibc 2.10:
_POSIX_C_SOURCE >= 200809L
قبل glibc 2.10:
_GNU_SOURCE
تحدّث utimensat() وfutimens() أختام الوقت للملف بدقة نانوثانية. يتناقض هذا مع utime(2) وutimes(2) التاريخيتين، اللتين تسمحان فقط بدقة ثانية وميكروثانية على التوالي عند ضبط أختام الوقت للملف.
مع utimensat() يُحدد الملف عبر اسم المسار المعطى في path. مع futimens() يُحدد الملف الذي ستُحدّث أختام وقته عبر واصف ملف مفتوح، fd.
لكلا الاستدعاءين، تُحدد أختام الوقت الجديدة للملف في المصفوفة times: يُحدد times[0] "وقت الوصول الأخير" الجديد (atime)؛ يُحدد times[1] "وقت التعديل الأخير" الجديد (mtime). يُحدد كل عنصر من عناصر times وقتًا بعدد الثواني والنانوثوان منذ العصر، 1970-01-01 00:00:00 +0000 (UTC). تُنقل هذه المعلومات في بنية timespec(3).
تُضبط أختام الوقت المحدّثة للملف إلى أكبر قيمة يدعمها نظام الملفات لا تتجاوز الوقت المحدد.
إذا كان حقل tv_nsec لإحدى بنى timespec يحمل القيمة الخاصة UTIME_NOW، فإن ختم الوقت المقابل للملف يُضبط إلى الوقت الحالي. إذا كان حقل tv_nsec لإحدى بنى timespec يحمل القيمة الخاصة UTIME_OMIT، فإن ختم الوقت المقابل للملف يُترك دون تغيير. في كلتا هاتين الحالتين، يُتجاهل قيمة حقل tv_sec المقابل.
إذا كان times NULL، فإن كلا الختمين يُضبطان إلى الوقت الحالي.
سيُضبط وقت تغيير الحالة (ctime) إلى الوقت الحالي، حتى لو لم تتغير أختام الوقت الأخرى فعليًا.
لضبط كلا ختمي الوقت للملف إلى الوقت الحالي (أي، times هو NULL، أو كلا حقلي tv_nsec يحددان UTIME_NOW)، إما:
لإجراء أي تغيير غير ضبط كلا الختمين إلى الوقت الحالي (أي، times ليس NULL، ولا حقل tv_nsec هو UTIME_NOW ولا حقل tv_nsec هو UTIME_OMIT)، يجب أن ينطبق الشرط 2 أو 3 أعلاه.
إذا تم تحديد كلا حقلي tv_nsec كـ UTIME_OMIT، فلا تُجرى أي فحوصات لملكية الملف أو أذوناته، ولا تُعدّل أختام الوقت للملف، ولكن قد تُكتشف شروط خطأ أخرى.
إذا كان path نسبيًا، فإنه يُفسر مبدئيًا بالنسبة إلى الدليل المشار إليه بواسطة واصف الملف المفتوح، dirfd (بدلاً من نسبته إلى دليل العمل الحالي للعملية المستدعية، كما تفعل utimes(2) لاسم مسار نسبي). انظر openat(2) لشرح لماذا يمكن أن يكون هذا مفيدًا.
إذا كان المسار path نسبيا وكان dirfd هو القيمة الخاصة AT_FDCWD، فسيُفسر path نسبة إلى دليل العمل الحالي للعملية المستدعِيَة (مثل utimes(2)).
إذا كان المسار path مطلقاً، فُيتجاهل dirfd.
وسيطة flags هي قناع بتات يُنشأ بواسطة OR معًا صفر أو أكثر من القيم التالية المعرفة في <fcntl.h>:
عند النجاح، تُرجع utimensat() وfutimens() 0. عند الخطأ، يُرجع -1 ويُضبط errno للإشارة إلى الخطأ.
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
| الواجهة | السمة | القيمة |
| utimensat(), futimens() | سلامة الخيوط | MT-Safe |
في لينكس، futimens() هي دالة مكتبة مطبقة فوق استدعاء النظام utimensat(). لدعم هذا، يطبق استدعاء النظام utimensat() في لينكس ميزة غير قياسية: إذا كان path هو NULL، فإن الاستدعاء يعدل الطوابع الزمنية للملف المشار إليه بواسطة واصف الملف dirfd (الذي قد يشير إلى أي نوع من الملفات). باستخدام هذه الميزة، يتم تنفيذ الاستدعاء futimens(fd, times) كالتالي:
utimensat(fd, NULL, times, 0);
لاحظ، مع ذلك، أن غلاف glibc لـ utimensat() يمنع تمرير NULL كقيمة لـ path: دالة الغلاف ترجع الخطأ EINVAL في هذه الحالة.
POSIX.1-2024.
utimensat() يلغي futimesat(2).
في لينكس، لا يمكن تغيير الطوابع الزمنية لملف مُعلّم كغير قابل للتغيير، والتغيير الوحيد المسموح به للملفات المُعلّمة كملحق فقط هو تعيين الطوابع الزمنية إلى الوقت الحالي. (هذا متسق مع السلوك التاريخي لـ utime(2) و utimes(2) على لينكس.)
إذا تم تحديد كلا حقلي tv_nsec كـ UTIME_OMIT، فإن تنفيذ لينكس لـ utimensat() ينجح حتى لو كان الملف المشار إليه بواسطة dirfd و path غير موجود.
تعاني utimensat() و futimens() من عدة أخطاء قبل لينكس 2.6.26. هذه الأخطاء إما عدم امتثال لمواصفات مسودة POSIX.1 أو عدم تناسق مع سلوك لينكس التاريخي.
chattr(1), touch(1), futimesat(2), openat(2), stat(2), utimes(2), futimes(3), timespec(3), inode(7), path_resolution(7), symlink(7)
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.