mkstemp(3)

الاسم
mkstemp, mkostemp, mkstemps, mkostemps - إنشاء ملف مؤقت فريد

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <stdlib.h>

int mkstemp(char *template);
int mkostemp(char *template, int flags);
int mkstemps(char *template, int suffixlen);
int mkostemps(char *template, int suffixlen, int flags);

    متطلبات ماكروات اختبار الميزات لـ glibc (انظر feature_test_macros(7)):

mkstemp():
    _XOPEN_SOURCE >= 500
        || /* glibc >= 2.12: */ _POSIX_C_SOURCE >= 200809L
        || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

mkostemp():
    _GNU_SOURCE

mkstemps():
    /* glibc >= 2.19: */ _DEFAULT_SOURCE
        || /* glibc <= 2.19: */ _SVID_SOURCE || _BSD_SOURCE

mkostemps():
    _GNU_SOURCE

الوصف
تولد الدالة mkstemp() اسم ملف مؤقت فريد من template، وتنشئ الملف وتفتحه، وتعيد واصف ملف مفتوح للملف.

يجب أن تكون آخر ستة محارف من template هي "XXXXXX" وتُستبدل هذه بسلسلة محارف تجعل اسم الملف فريدًا. نظرًا لأنه سيُعدل، فلا يجب أن يكون template ثابت سلسلة محارف، بل يُصرح عنه كمصفوفة محارف.

يُنشأ الملف بأذونات 0600، أي قراءة وكتابة للمالك فقط. يوفر واصف الملف المُعاد وصول القراءة والكتابة للملف. يُفتح الملف بعلم O_EXCL من open(2)، مما يضمن أن المتصل هو العملية التي تنشئ الملف.

الدالة mkostemp() تشبه mkstemp()، مع الفرق أن البتات التالية—بنفس المعنى كما في open(2)—قد تُحدد في flags: O_APPEND وO_CLOEXEC وO_SYNC. لاحظ أنه عند إنشاء الملف، تضمّن mkostemp() القيم O_RDWR وO_CREAT وO_EXCL في وسيط flags المُعطى لـ open(2)؛ تضمين هذه القيم في وسيط flags المُعطى لـ mkostemp() غير ضروري، ويُنتج أخطاء في بعض الأنظمة.

الدالة mkstemps() تشبه mkstemp()، باستثناء أن سلسلة المحارف في template تحتوي على لاحقة بطول suffixlen محرفًا. وبالتالي، template يكون بالشكل prefixXXXXXXsuffix، وتُعدل سلسلة المحارف XXXXXX كما في mkstemp().

الدالة mkostemps() بالنسبة لـ mkstemps() هي كما mkostemp() بالنسبة لـ mkstemp().

قيمة الإرجاع
عند النجاح، تُعيد هذه الدوال واصف الملف المؤقت. عند الخطأ، تُعاد -1، ويُضبط errno للإشارة إلى الخطأ.

الأخطاء

EEXIST
    تعذر إنشاء اسم ملف مؤقت فريد. الآن محتويات template غير مُعرّفة.

EINVAL
    بالنسبة لـ mkstemp() وmkostemp(): آخر ستة محارف من template لم تكن XXXXXX؛ الآن template لم يتغير.

    بالنسبة لـ mkstemps() وmkostemps(): طول template أقل من (6 + suffixlen) محرفًا، أو آخر 6 محارف قبل اللاحقة في template لم تكن XXXXXX.

قد تفشل هذه الدوال أيضًا مع أي من الأخطاء الموصوفة لـ open(2).

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
mkstemp()، mkostemp()، mkstemps()، mkostemps() | سلامة الخيوط | MT-Safe

المعايير

mkstemp()
    POSIX.1-2001.

mkstemps()
    BSD.

mkostemp()
mkostemps()
    GNU.

التاريخ

mkstemp()
    4.3BSD، POSIX.1-2001.

mkstemps()
    glibc 2.11. BSD، ماك أو إس إكس، سولاريس، ترو64.

mkostemp()
    glibc 2.7.

mkostemps()
    glibc 2.11.

في إصدارات glibc 2.06 والأقدم، يُنشأ الملف بأذونات 0666، أي قراءة وكتابة لجميع المستخدمين. قد يشكل هذا السلوك القديم خطرًا أمنيًا، خاصةً أن نكهات يونكس الأخرى تستخدم 0600، وقد يغفل أحدهم عن هذه التفصيلة عند نقل البرامج. يضيف POSIX.1-2008 شرطًا بأن يُنشأ الملف بالوضع 0600.

بشكل أعم، لا يذكر مواصفة POSIX للدالة mkstemp() شيئًا عن أوضاع الملف، لذا ينبغي للتطبيق التأكد من تعيين قناع إنشاء وضع الملف (انظر umask(2)) بشكل مناسب قبل استدعاء mkstemp() (و mkostemp()).

انظر أيضًا
mkdtemp(3)، mktemp(3)، tempnam(3)، tmpfile(3)، tmpnam(3)

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.