tempnam(3)

الاسم
tempnam - إنشاء اسم لملف مؤقت

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

موجز
#include <stdio.h>

char *tempnam(const char *dir, const char *pfx);

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

tempnam():
    منذ glibc 2.19:
        _DEFAULT_SOURCE
    glibc 2.19 وما قبله:
        _BSD_SOURCE || _SVID_SOURCE

الوصف
لا تستخدم هذه الدالة أبدًا. استخدم mkstemp(3) أو tmpfile(3) بدلاً من ذلك.

ترجع الدالة tempnam() مؤشرًا إلى سلسلة محارف تمثل اسم ملف صالح، بحيث لم يكن ملف بهذا الاسم موجودًا عند فحص tempnam(). ستبدأ لاحقة اسم الملف للمسار المُنشأ بـ pfx إذا كانت pfx سلسلة محارف غير NULL بطول خمسة بايتات كحد أقصى. يُشترط أن يكون جزء بادئة الدليل للمسار المُنشأ "مناسبًا" (غالبًا يعني ذلك على الأقل قابلًا للكتابة).

تمر محاولات العثور على دليل مناسب بالخطوات التالية:

(1) إذا وُجد متغير البيئة TMPDIR واحتوى على اسم دليل مناسب، يُستخدم ذلك.

(2) وإلا، إذا كان المعامل dir غير NULL ومناسبًا، يُستخدم.

(3) وإلا، يُستخدم P_tmpdir (كما هو مُعرّف في <stdio.h>) عندما يكون مناسبًا.

(4) أخيرًا، قد يُستخدم دليل مُعرّف بواسطة التطبيق.

السلسلة التي تُرجعها tempnam() تُخصص باستخدام malloc(3) وبالتالي يجب تحريرها بواسطة free(3).

قيمة الإرجاع
عند النجاح، ترجع الدالة tempnam() مؤشرًا إلى اسم ملف مؤقت فريد. تُرجع NULL إذا تعذر إنشاء اسم فريد، مع تعيين errno للإشارة إلى الخطأ.

الأخطاء

ENOMEM
    فشل تخصيص التخزين.

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

المعايير
POSIX.1-2008.

التاريخ
SVr4، 4.3BSD، POSIX.1-2001. أُهملت في POSIX.1-2008.

ملاحظات
على الرغم من أن tempnam() تُنشئ أسماء يصعب تخمينها، إلا أنه من الممكن بين الوقت الذي تُرجع فيه tempnam() مسارًا والوقت الذي يفتح فيه البرنامج هذا المسار، أن ينشئ برنامج آخر ذلك المسار باستخدام open(2) أو ينشئه كرابط رمزي. قد يؤدي هذا إلى ثغرات أمنية. لتجنب هذه الاحتمالات، استخدم علامة O_EXCL من open(2) لفتح المسار. أو الأفضل، استخدم mkstemp(3) أو tmpfile(3).

لا يذكر SUSv2 استخدام TMPDIR؛ تستخدمه glibc فقط عندما لا يكون البرنامج set-user-ID. في SVr4، الدليل المستخدم تحت (4) هو /tmp (وهذا ما تفعله glibc).

لأنها تخصص الذاكرة ديناميكيًا المستخدمة لإرجاع المسار، فإن tempnam() قابلة لإعادة الدخول، وبالتالي آمنة للخيوط، على عكس tmpnam(3).

تُنشئ الدالة tempnam() سلسلة محارف مختلفة في كل مرة تُستدعى فيها، حتى TMP_MAX مرة (مُعرّفة في <stdio.h>). إذا استُدعيت أكثر من TMP_MAX مرة، يكون السلوك مُعرّفًا بواسطة التطبيق.

تستخدم tempnam() خمسة بايتات كحد أقصى من pfx.

تنفيذ glibc للدالة tempnam() يفشل مع الخطأ EEXIST عند الفشل في إيجاد اسم فريد.

العلل
المعنى الدقيق لـ"مناسب" غير مُعرَّف؛ من غير المحدد كيف تُحدد إمكانية الوصول إلى دليل.

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

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

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

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