pread(2)

الاسم
pread, pwrite - قراءة من أو كتابة إلى واصف ملف عند إزاحة معينة

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

موجز
#include <unistd.h>

ssize_t pread(size_t count;
              int fd, void buf[count], size_t count,
              off_t offset);
ssize_t pwrite(size_t count;
              int fd, const void buf[count], size_t count,
              off_t offset);

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

pread()، pwrite():
    _XOPEN_SOURCE >= 500
        || /* منذ glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

الوصف
يقرأ pread() حتى count بايت من واصف الملف fd عند إزاحة offset (من بداية الملف) إلى المخزن المؤقت الذي يبدأ عند buf. لا تتغير إزاحة الملف.

يكتب pwrite() حتى count بايت من المخزن المؤقت الذي يبدأ عند buf إلى واصف الملف fd عند إزاحة offset. لا تتغير إزاحة الملف.

يجب أن يكون الملف المشار إليه بواسطة fd قادرًا على البحث.

قيمة الإرجاع
عند النجاح، يُرجع pread() عدد البايتات المقروءة (إرجاع صفر يشير إلى نهاية الملف) ويُرجع pwrite() عدد البايتات المكتوبة.

لاحظ أنه ليس خطأً إذا قامت مكالمة ناجحة بنقل بايتات أقل مما هو مطلوب (راجع read(2) و write(2)).

عند حدوث خطأ، يُرجع -1 ويُضبط errno للإشارة إلى الخطأ.

الأخطاء
يمكن أن يفشل pread() ويضبط errno على أي خطأ محدد لـ read(2) أو lseek(2). يمكن أن يفشل pwrite() ويضبط errno على أي خطأ محدد لـ write(2) أو lseek(2).

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

التاريخ
POSIX.1-2001.

أُضيف في Linux 2.1.60؛ أُضيفت الإدخالات في جدول استدعاءات النظام i386 في Linux 2.1.69. أُضيف دعم مكتبة C (بما في ذلك المحاكاة باستخدام lseek(2) على النوى الأقدم بدون استدعاءات النظام) في glibc 2.1.

  الاختلافات بين مكتبة C والنواة
على Linux، أُعيد تسمية استدعاءات النظام الأساسية في Linux 2.6: أصبح pread() pread64()، وأصبح pwrite() pwrite64(). بقيت أرقام استدعاءات النظام كما هي. تتعامل دوال الغلاف pread() و pwrite() في glibc مع التغيير بشفافية.

في بعض معماريات 32 بت، تختلف بصمة الاستدعاء لنداءات النظام هذه، للأسباب الموصوفة في syscall(2).

ملاحظات
استدعاءات النظام pread() و pwrite() مفيدة بشكل خاص في التطبيقات متعددة الخيوط. تسمح لخيوط متعددة بإجراء الإدخال/الإخراج على نفس واصف الملف دون التأثر بتغييرات إزاحة الملف بواسطة خيوط أخرى.

العلل
يتطلب POSIX ألا يكون لفتح ملف بالعلامة O_APPEND أي تأثير على الموقع الذي يكتب فيه pwrite() البيانات. ومع ذلك، على Linux، إذا فُتح ملف بـ O_APPEND، يُلحق pwrite() البيانات بنهاية الملف، بغض النظر عن قيمة offset.

انظر أيضًا
lseek(2)، read(2)، readv(2)، write(2)

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

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

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