error(3)

الاسم
error, error_at_line, error_message_count, error_one_per_line, error_print_progname - دوال الإبلاغ عن الأخطاء في glibc

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

موجز
#include <error.h>

void error(int status, int errnum, const char *format, ...);
void error_at_line(int status, int errnum, const char *file,
                   unsigned int line, const char *format, ...);

extern unsigned int error_message_count;
extern int error_one_per_line;

extern typeof(void (void))  *error_print_progname;

الوصف
error() دالة عامة للإبلاغ عن الأخطاء. تُفرغ stdout، ثم تُخرج إلى stderr اسم البرنامج، ونقطتين رأسيتين ومسافة، والرسالة المحددة بواسطة سلسلة التنسيق بنمط printf(3) format، وإذا كان errnum غير صفري، نقطتين رأسيتين ومسافة ثانية متبوعة بالسلسلة المعطاة بواسطة strerror(errnum). أي وسائط مطلوبة لـ format يجب أن تتبع format في قائمة الوسائط. يُنهى الإخراج بحرف سطر جديد.

اسم البرنامج المطبوع بواسطة error() هو قيمة المتغير العام program_invocation_name(3). program_invocation_name له في البداية نفس قيمة argv[0] للدالة main(). يمكن تعديل قيمة هذا المتغير لتغيير مخرجات error().

إذا كان status له قيمة غير صفرية، فإن error() تستدعي exit(3) لإنهاء البرنامج باستخدام القيمة المعطاة كحالة خروج؛ وإلا فإنها تعود بعد طباعة رسالة الخطأ.

الدالة error_at_line() هي نفسها تمامًا error()، باستثناء إضافة الوسيطتين file و line. المخرجات المنتجة هي كما في error()، باستثناء أنه بعد اسم البرنامج يُكتب: نقطتان رأسيتان، قيمة file، نقطتان رأسيتان، وقيمة line. قد تكون قيم المعالج الأولي __LINE__ و __FILE__ مفيدة عند استدعاء error_at_line()، ولكن يمكن استخدام قيم أخرى أيضًا. على سبيل المثال، يمكن أن تشير هذه الوسائط إلى موقع في ملف إدخال.

إذا تم تعيين المتغير العام error_one_per_line إلى قيمة غير صفرية، فإن سلسلة من استدعاءات error_at_line() بنفس قيمة file و line ستؤدي إلى إخراج رسالة واحدة فقط (الأولى).

المتغير العام error_message_count يعد عدد الرسائل التي تم إخراجها بواسطة error() و error_at_line().

إذا تم تعيين المتغير العام error_print_progname إلى عنوان دالة (أي ليس NULL)، فسيتم استدعاء تلك الدالة بدلاً من بادئة الرسالة باسم البرنامج والنقطتين الرأسيتين. يجب على الدالة طباعة سلسلة محارف مناسبة إلى stderr.

السمات
للاطلاع على شرح للمصطلحات المستخدمة في هذا القسم، انظر attributes(7).
الواجهة | السمة | القيمة
error() | سلامة الخيوط | المنطقة (locale) آمنة لتعدد المسالك (MT-Safe)
error_at_line() | سلامة الخيوط | MT-Unsafe race: error_at_line/error_one_per_line locale

يتم الوصول إلى المتغير الداخلي error_one_per_line (بدون أي شكل من أشكال التزامن، ولكن نظرًا لأنه int يُستخدم مرة واحدة، يجب أن يكون آمنًا بما فيه الكفاية)، وإذا تم تعيين error_one_per_line إلى قيمة غير صفرية، يتم الوصول إلى المتغيرات الثابتة الداخلية (غير المكشوفة للمستخدمين) المستخدمة لحفظ آخر اسم ملف ورقم سطر مطبوعين وتعديلها بدون تزامن؛ التحديث ليس ذريًا ويحدث قبل تعطيل الإلغاء، لذلك يمكن مقاطعته فقط بعد تعديل أحد المتغيرين. بعد ذلك، error_at_line() تشبه إلى حد كبير error().

المعايير
GNU.

انظر أيضًا
err(3), errno(3), exit(3), perror(3), program_invocation_name(3), strerror(3)

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

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

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