Skip to main content

افتح قيادة لينكس و قيادة يونكس

انواع الدوران للخلف ( U Turn ) اليوتيرن #سناب_مصطفى_لايف #قيادة_المرأة_للسيارة (قد 2025)

انواع الدوران للخلف ( U Turn ) اليوتيرن #سناب_مصطفى_لايف #قيادة_المرأة_للسيارة (قد 2025)
Anonim

ملخص

#تتضمن #تتضمن #تتضمن فتح int (const char * مسار ، الأعلام ); فتح int (const char * مسار ، الأعلام ، mode_t الوضع ); المخترع int (const char * مسار ، mode_t الوضع );

وصف

الافتح() يتم استخدام الأمر linux استدعاء النظام لتحويل اسم مسار إلى واصف ملف (عدد صحيح صغير غير سلبي للاستخدام في I / O اللاحقة كما هو الحال مع اقرأ, اكتب، وما إلى ذلك). عند نجاح المكالمة ، يكون واصف الملف الذي تم إرجاعه wil هو واصف الملف الأدنى غير مفتوح حاليًا للعملية. تنشئ هذه المكالمة ملفًا مفتوحًا جديدًا ، ولا تتم مشاركته مع أي عملية أخرى. (لكن الملفات المفتوحة المشتركة قد تنشأ عن طريقشوكة(2) استدعاء النظام.) يتم تعيين واصف الملف الجديد ليظل مفتوحا عبر وظائف exec (انظرfcntl(2)). يتم تعيين إزاحة الملف إلى بداية الملف.

المعلمة الأعلام هو واحد منO_RDONLY, O_WRONLY أوO_RDWR التي تطلب فتح الملف للقراءة فقط أو الكتابة فقط أو القراءة / الكتابة ، على التوالي ، أو د مع صفر أو أكثر من الإجراءات التالية:

O_CREAT

إذا كان الملف غير موجود ، فسيتم إنشاؤه. يتم تعيين المالك (معرف المستخدم) للملف إلى معرف المستخدم الفعال للعملية. يتم تعيين ملكية المجموعة (معرف المجموعة) إما إلى معرف المجموعة الفعال للعملية أو إلى معرف المجموعة للدليل الرئيسي (حسب نوع نظام الملفات وخيارات التحميل ، ووضع الدليل الرئيسي ، انظر ، على سبيل المثال ، التثبيت خيارات bsdgroups و sysvgroups من نظام الملفات ext2 ، كما هو موضح فيتتزايد(8)).

O_EXCL

عند استخدامها معO_CREAT، إذا كان الملف موجود بالفعل فهو خطأ وافتح سوف تفشل. في هذا السياق ، يوجد رابط رمزي ، بغض النظر عن المكان الذي يشير إليه.O_EXCL هو كسر على أنظمة الملفات NFS ، فإن البرامج التي تعتمد عليها لأداء مهام قفل تحتوي على حالة السباق. الحل لأداء تأمين الملف الذري باستخدام lockfile هو إنشاء ملف فريد على نفس fs (على سبيل المثال ، دمج اسم المضيف و pid) ، استخدم الارتباط (2) لإنشاء ارتباط إلى lockfile. إذاحلقة الوصل() إرجاع 0 ، القفل بنجاح. خلاف ذلك ، استخدم القانون الأساسي(2) على الملف الفريد للتحقق مما إذا كان عدد الروابط قد ارتفع إلى 2 ، وفي هذه الحالة يكون القفل ناجحًا أيضًا.

O_NOCTTY

إذا مسار يشير إلى جهاز المحطة الطرفية --- انظرالكتابة البعيدة(4) --- أنها لن تصبح محطة التحكم في العملية حتى لو لم يكن لديك عملية واحدة.

O_TRUNC

إذا كان الملف موجودًا بالفعل وكان ملفًا عاديًا ويسمح وضع الفتح بالكتابة (أي ، O_RDWR أو O_WRONLY) ، فسيتم اقتطاعه إلى طول 0. إذا كان الملف ملف FIFO أو الجهاز الطرفي ، فسيتم تجاهل علامة O_TRUNC. خلاف ذلك ، فإن تأثير O_TRUNC غير محدد. (في العديد من إصدارات Linux ، سيتم تجاهلها ؛ في الإصدارات الأخرى ، ستعرض خطأ).

O_APPEND

يتم فتح الملف في وضع الإلحاق. قبل كلاكتب، يتم وضع مؤشر الملف في نهاية الملف ، كما لو كان معlseek. O_APPEND قد يؤدي إلى تلف الملفات على أنظمة الملفات NFS إذا ألقت عملية أكثر من واحد البيانات إلى ملف في وقت واحد. ويرجع ذلك إلى أن NFS لا يدعم إلحاق ملف ، لذا يجب على kernel العميل محاكاته ، والتي لا يمكن إجراؤها بدون حالة سباق.

O_NONBLOCK أوعلى تأخير

عندما يكون ذلك ممكنًا ، يتم فتح الملف في وضع عدم الحظر. لاافتح ولا أي عمليات لاحقة على واصف الملف الذي يتم إرجاعه سيؤدي إلى انتظار عملية الاستدعاء. للتعامل مع FIFOs (أنابيب اسمه) ، انظر أيضاFIFO(4). لا يجب أن يكون لهذا الوضع أي تأثير على الملفات الأخرى بخلاف FIFOs.

O_SYNC

يتم فتح الملف للإدخال / الإخراج المتزامن. أياكتبs على واصف الملف الناتج سيتم حظر عملية الاستدعاء حتى يتم كتابة البيانات جسديا إلى الأجهزة الأساسية. انظر القيود أدناه ، على الرغم من.

O_NOFOLLOW

إذا مسار هو ارتباط رمزي ، ثم فشل فتح. هذا هو امتداد FreeBSD ، الذي تمت إضافته إلى Linux في الإصدار 2.1.126. لا يزال سيتم اتباع الروابط الرمزية في المكونات السابقة من اسم المسار. تتضمن الرؤوس من glibc 2.0.100 والإصدارات الأحدث تعريفًا لهذه العلامة؛ سوف اللب قبل 2.1.126 تجاهلها إذا استخدمت .

O_DIRECTORY

إذا مسار ليس دليلاً ، يتسبب في فشل فتح. هذه العلامة خاصة بـ Linux ، وتمت إضافتها في إصدار kernel 2.1.126 ، لتجنب مشاكل رفض الخدمة إذاopendir(3) يسمى على جهاز FIFO أو شريط ، ولكن لا ينبغي أن تستخدم خارج تنفيذopendir.

O_DIRECT

حاول تقليل تأثيرات ذاكرة التخزين المؤقت للإدخال / الإخراج من وإلى هذا الملف. بشكل عام سيؤدي ذلك إلى انخفاض الأداء ، ولكنه مفيد في حالات خاصة ، مثل عندما تقوم التطبيقات بالتخزين المؤقت الخاص بها. تتم عملية إدخال / إخراج الملف مباشرة من / إلى مخازن مساحة المستخدم. I / O متزامن ، أي عند الانتهاء من اقرأ(2) أواكتب(2) استدعاء النظام ، يتم ضمان البيانات التي تم نقلها. يجب أن تكون أحجام النقل ، ومحاذاة المخزن المؤقت للمستخدم وإزاحة الملف جميعها مضاعفات حجم الكتلة المنطقية لنظام الملفات.هذه العلامة مدعومة على عدد من الأنظمة المشابهة لنظام يونكس. تمت إضافة الدعم تحت Linux في إصدار kernel 2.4.10.يتم وصف واجهة مشابهة لغويًا لأجهزة الحظر فيالخام(8).

O_ASYNC

توليد إشارة (SIGIO بشكل افتراضي ، ولكن يمكن تغيير ذلك عبرfcntl(2)) عندما يصبح من الممكن إدخال أو إخراج على واصف الملف هذا. هذه الميزة متاحة فقط للمحطات الطرفية ، والمحطات الزائفة ، والمقابس. نرىfcntl(2) لمزيد من التفاصيل.

O_LARGEFILE

في الأنظمة 32 بت التي تدعم نظام الملفات الكبيرة ، تسمح للملفات التي لا يمكن تمثيل أحجامها في 31 بتة ليتم فتحها.

يمكن تغيير بعض هذه العلامات الاختيارية باستخدامfcntl بعد فتح الملف.

الحجة الوضع يحدد أذونات الاستخدام في حالة إنشاء ملف جديد. يتم تعديلها من قبل العمليةumask بالطريقة المعتادة: أذونات الملف الذي تم إنشاؤه هي(الوضع & ~ umask). لاحظ أن هذا الوضع ينطبق فقط على عمليات الوصول المستقبلية للملف المنشأ حديثًا ؛ الافتحاستدعاء يقوم بإنشاء ملف للقراءة فقط قد ترجع واصف ملف القراءة / الكتابة.

يتم توفير الثوابت الرمزية التالية من أجل الوضع :

S_IRWXU

قام مستخدم 00700 (مالك الملف) بقراءة وكتابة وتنفيذ الإذن

S_IRUSR (S_IREAD)

مستخدم 00400 لديه إذن القراءة

S_IWUSR (S_IWRITE)

مستخدم 00200 لديه إذن الكتابة

S_IXUSR (S_IEXEC)

مستخدم 00100 لديه إذن تنفيذ

S_IRWXG

مجموعة 00070 لديها قراءة وكتابة وتنفيذ الإذن

S_IRGRP

المجموعة 00040 لديها إذن القراءة

S_IWGRP

مجموعة 00020 لديه إذن الكتابة

S_IXGRP

المجموعة 00010 لديها إذن تنفيذ

S_IRWXO

00007 آخرون قاموا بقراءة وكتابة وتنفيذ الإذن

S_IROTH

00004 آخرون قد قرأت الإذن

S_IWOTH

00002 البعض الآخر لديهم إذن الكتابة

S_IXOTH

00001 آخرين قاموا بتنفيذ الإذن

الوضع يجب تحديد متىO_CREAT في ال الأعلام ويتم تجاهله بطريقة أخرى.

يخلق ما يعادلافتح مع الأعلام يساويO_CREAT | O_WRONLY | O_TRUNC.

قيمة الإرجاع

افتح ويخلق إرجاع واصف الملف الجديد ، أو -1 إذا حدث خطأ (في هذه الحالة ، errno تم تعيينه بشكل مناسب). لاحظ أنافتح يمكن فتح ملفات خاصة بالجهاز ، ولكنيخلق لا يمكن إنشاؤها - استخدامmknod(2) بدلا من ذلك.

على أنظمة الملفات NFS مع تمكين تعيين UID ،افتح قد ترجع واصف ملف ولكن على سبيل المثال اقرأ(2) الطلبات مرفوضةEACCES. هذا لأن العميل ينفذافتح عن طريق التحقق من الأذونات ، ولكن يتم تنفيذ تعيين UID بواسطة الخادم عند قراءة وكتابة الطلبات.

إذا تم إنشاء الملف حديثًا ، فسيتم تعيين الحقول mtime و ctime و mtime على الوقت الحالي ، وكذلك حقول ctime و mtime للدليل الأساسي. وإلا ، إذا تم تعديل الملف بسبب علامة O_TRUNC ، يتم تعيين الحقول ctime و mtime الخاصة به إلى الوقت الحالي.

أخطاء

EEXIST

مسار موجود بالفعل وO_CREAT وO_EXCL استخدمت.

EISDIR

مسار يشير إلى دليل والوصول المطلوب للكتابة (أي ،O_WRONLY أوO_RDWR تم تعيين).

EACCES

لا يُسمح بالوصول المطلوب إلى الملف ، أو أحد الأدلة الموجودة فيه مسار لم تسمح بإذن البحث (تنفيذ) ، أو لم يكن الملف موجودًا حتى الآن ولا يُسمح بكتابة الوصول إلى الدليل الرئيسي.

ENAMETOOLONG

مسار كان طويل جدا.

ENOENT

لم يتم تعيين O_CREAT ولا يوجد الملف المحدد. أو ، مكون دليل في مسار غير موجود أو هو ارتباط رمزي متدلي.

ENOTDIR

مكون يستخدم كدليل في مسار ليس ، في الواقع ، دليل ، أوO_DIRECTORYتم تحديد و مسار لم يكن دليلا.

ENXIO

O_NONBLOCK | تم تعيين O_WRONLY ، الملف المسمى هو FIFO ولم يتم فتح الملف للقراءة. أو ، الملف هو ملف خاص بجهاز ولا يوجد جهاز مناظر.

ENODEV

مسار يشير إلى ملف خاص بالجهاز ولا يوجد جهاز مناظر. (هذا خطأ في kernel Linux - في هذه الحالة يجب إرجاع ENXIO.)

EROFS

مسار يشير إلى ملف على نظام ملفات للقراءة فقط وطلب الوصول للكتابة.

ETXTBSY

مسار يشير إلى صورة تنفيذية يتم تنفيذها حاليًا ويتم طلب الوصول للكتابة.

EFAULT

مسار نقاط خارج مساحة العنوان يمكن الوصول إليها.

ELOOP

تم اكتشاف العديد من الروابط الرمزية في الحل مسار أوO_NOFOLLOW تم تحديده ولكن مسار كان رابط رمزي.

ENOSPC

مسار كان من المقرر أن يتم إنشاؤه ولكن الجهاز يحتوي على مسار لا يوجد مجال للملف الجديد.

ENOMEM

كانت ذاكرة kernel غير كافية.

EMFILE

تحتوي العملية بالفعل على الحد الأقصى لعدد الملفات المفتوحة.

ENFILE

تم الوصول إلى الحد الأقصى لعدد الملفات المفتوحة على النظام.

التاكيد الى

SVr4، SVID، POSIX، X / OPEN، BSD 4.3 TheO_NOFOLLOW وO_DIRECTORY الأعلام هي لينكس محددة. قد يكون واحد لتحديد_GNU_SOURCE ماكرو للحصول على تعريفاتها.

قيود

هناك العديد من infelicities في البروتوكول الأساسي NFS ، التي تؤثر على غيرهاO_SYNC وعلى تأخير.

يوفر POSIX لثلاثة أنواع مختلفة من I / O متزامنة ، المقابلة للأعلامO_SYNC , O_DSYNC و O_RSYNC. حاليا (2.1.130) كلها مترادفة في لينكس.