مطمئن
/usr/include/sys/types.h>> sys / types.h> شامل کریں # ایک HREF = "فائل: /usr/include/sys/stat.h"> میں شامل کریں << ایک HREF = "فائل:> sys / stat.h> شامل کریں # ایک HREF = "فائل: /usr/include/fcntl.h"> fcntl.h> int کھلے (const چار * راستہ نام ، انٹرن پرچم )؛ int کھلی (const چار * pathname ، int پرچم ، mode_t موڈ )؛ ان کی تخلیق (محرک چار * روڈ نام ، موڈ_ٹ موڈ )؛تفصیل
لینکس کمانڈ پر کھلی () سسٹم کا استعمال کالم ڈس آرڈر (ایک چھوٹا سا، غیر منفی انٹرفیس کے بعد میں بعد میں I / O میں استعمال کے طور پر پڑھنے ، لکھنے ، وغیرہ کے ساتھ) میں روڈ نام تبدیل کرنا ہوتا ہے. جب کال کامیاب ہوجاتا ہے تو، فائل کی تشریح کنندہ اس وقت واپس آیا جس میں فی الحال کم از کم فائل کی تشریحی عمل نہیں ہے. یہ کال ایک نئی کھلی فائل تخلیق کرتا ہے، کسی دوسرے عمل کے ساتھ اشتراک نہیں کیا جاتا ہے. (لیکن کھلی فائلوں کا اشتراک فورک (2) سسٹم کال کے ذریعہ ہوسکتا ہے.) نیا فائل کی وضاحت کرنے کے لئے عملدرآمد کے افعال میں کھلے رہنے کے لئے مقرر کیا جاتا ہے ( fcntl (2) دیکھیں. فائل آفسیٹ فائل کے آغاز پر مقرر کیا جاتا ہے.
پیرامیٹر پرچم O_RONONLY ، O_WRONLY یا O_RDWR میں سے ایک ہے، جس میں مندرجہ ذیل میں سے صفر یا اس سے زیادہ کے ساتھ پڑھنے والی فائل کو کھولنے، صرف لکھنے یا پڑھنے / لکھنے، क्रमی طور پر، بطور طور پر یا ب
O_CREAT
اگر فائل موجود نہیں ہے تو اسے تیار کیا جائے گا. اس فائل کے مالک (صارف کی شناخت) فائل کے عمل کے مؤثر صارف کی شناخت پر مبنی ہے. گروپ کی ملکیت (گروپ کی شناخت) کو یا تو پروسیسنگ کے مؤثر گروپ کی شناخت یا والدین کی ڈائرکٹری کے گروپ کی شناخت کے مطابق مقرر کیا جاتا ہے (فائل سسٹم کی قسم پر منحصر ہے اور ماؤنٹ ڈائرکٹری کے موڈ، ملاحظہ کریں، مثال کے طور پر، پہاڑ اختیارات bsdgroups اور ext2 فائلوں کے sysvgroups ، جیسا کہ پہاڑ (8) میں بیان کیا گیا ہے.
O_EXCL
جب O_CREAT کے ساتھ استعمال کیا جاتا ہے تو، اگر فائل پہلے ہی موجود ہے تو یہ ایک غلطی ہے اور کھلی ناکامی ناکام ہو گی. اس سلسلے میں، ایک علامتی لنک موجود ہے، قطع نظر اس کے پوائنٹس کہاں ہیں. O_EXCL NFS فائل کے نظام پر ٹوٹ جاتا ہے، جس پروگراموں کو تالا لگا کاموں کے لۓ اس پر عمل کرنا ایک ریس حالت میں شامل ہو گا. لاکف فائل کا استعمال کرتے ہوئے جوہری فائل فائل کو روکنے کے لئے حل اسی ایف ایس پر ایک منفرد فائل بنانا ہے (مثال کے طور پر، میزبانی نامہ اور پیڈ شامل)، لنک (2) کو لاکفائل کے لنک بنانے کے لئے استعمال کریں. اگر لنک () 0 واپس آتا ہے تو، تالا کامیاب ہے. دوسری صورت میں، منفرد فائل پر stat (2) کا استعمال کریں کہ اس کی لنک کی گنتی 2 میں بڑھ گئی ہے، اس صورت میں تالا لگا بھی کامیاب ہے.
O_NOCTTY
اگر راستہ کا نام ٹرمینل ڈیوائس سے مراد ہوتا ہے تو --- ٹیٹی (4) دیکھیں --- --- یہ عمل پروسیسنگ ٹرمینل بن جائے گا یہاں تک کہ اگر عمل نہیں ہے.
O_TRUNC
اگر فائل پہلے ہی موجود ہے اور باقاعدگی سے فائل ہے اور کھلی موڈ لکھنے کی اجازت دیتا ہے (یعنی، O_RDWR یا O_WRONLY) یہ لمبائی میں چھوٹا جائے گا. اگر فائل ایک فیفا یا ٹرمینل ڈیوائس فائل ہے تو، O_TRUNC پرچم کو نظر انداز کردیا جاتا ہے. دوسری صورت میں، O_TRUNC کا اثر غیر واضح ہے. (بہت سے لینکس کے ورژن پر یہ نظر انداز کیا جائے گا؛ دوسرے ورژن پر، یہ ایک غلطی کی جائے گی.)
O_APPEND
فائل اپ ڈیٹ موڈ میں کھولی گئی ہے. ہر تحریر سے پہلے، فائل پوائنٹر فائل کے اختتام پر پوزیشن میں ہے، جیسا کہ لسی کے ساتھ. O_APPEND NFS فائل کے نظام پر خراب فائلوں کی قیادت کر سکتا ہے اگر ایک سے زیادہ عمل ایک بار فائل میں ڈیٹا کو ضم کرتا ہے. یہ اس وجہ سے ہے کہ این ایف ایس کسی فائل کو ضم کرنے کی حمایت نہیں کرتا ہے، لہذا کلائنٹ کینیٹ اسے تخیل کرنا پڑتا ہے، جو دوڑ حالت کے بغیر نہیں کیا جا سکتا.
O_NONBLOCK یا O_NDELAY
جب ممکن ہو، فائل غیر مسدود کرنے والے موڈ میں کھول دیا جاتا ہے. نہ ہی کھلا نہیں اور نہ ہی بعد میں کسی بھی فائل کی وضاحت کرنے والی کارروائیوں میں آنے والی کارروائییں جو واپس آتی ہیں، بلے بازی کا عمل انتظار کرنا ہوگا. FIFOs (نامزد پائپوں) کو سنبھالنے کے لۓ، پچؤ (4) بھی دیکھیں. اس موڈ کو FIFOs کے علاوہ فائلوں پر کوئی اثر نہیں ہے.
O_SYNC
ہم آہنگی I / O کے لئے فائل کھول دی گئی ہے. نتیجے میں فائل ڈائرکٹری پر کوئی بھی لکھنے والی کالنگ کے عمل کو روکنے کے لۓ ڈیٹا تک جسمانی طور پر بنیادی ہارڈ ویئر تک لکھا جاتا ہے. اگرچہ ذیل میں پابندیاں دیکھیں.
O_NOFOLLOW
اگر راستے کا نشان ایک علامتی لنک ہے تو پھر کھلا ناکام ہوجاتا ہے. یہ ایک FreeBSD توسیع ہے، جس میں لینکس میں 2.1.126 ورژن شامل کیا گیا تھا. راستے کے نام کے پہلے اجزاء میں علامتی روابط ابھی بھی عمل کیے جائیں گے. glibc 2.0.100 سے ہیڈر اور اس کے بعد اس پرچم کی ایک تعریف شامل ہے؛ استعمال کیا جاتا ہے تو 2.1.126 سے پہلے کھنگالیں نظر انداز کریں گے .
O_DIRECTORY
اگر راستے کا نام ڈائریکٹری نہیں ہے تو، وجہ کھلی ناکامی کا باعث بنتی ہے. یہ پرچم لینکس مخصوص ہے، اور کنییل ورژن 2.1.126 میں شامل کیا گیا تھا، انکار کرنے کی سروس کے مسائل سے بچنے کے لئے اگر آپ کو فیفا یا ٹیپ ڈیوائس پر اوپنڈر (3) کہا جاتا ہے، لیکن اس کے استعمال سے باہر نہیں ہونا چاہئے. .
O_DIRECT
اس فائل سے اور / O کے کیش کے اثرات کو کم کرنے کی کوشش کریں. عام طور پر یہ کارکردگی کو خراب کرے گا، لیکن خاص حالات میں یہ مفید ہے، جیسے ایپلی کیشنز اپنے ہی کیشنگ کرتے ہیں. فائل I / O صارف اسپیس بفروں سے / براہ راست کیا جاتا ہے. I / O مطابقت پذیر ہے، یعنی، پڑھنے (2) یا لکھنے (2) نظام کال کے تکمیل پر، ڈیٹا کو منتقل کرنے کی ضمانت دی جاتی ہے. منتقلی کے سائز، اور صارف بفر اور فائل آفسیٹ کی سیدھ تمام فائل فائل کے منطقی بلاک کے سائز کے ملٹی ہونا ضروری ہے.
یہ پرچم ایک یونس کی طرح کے نظام پر حمایت کرتا ہے؛ لینکس ورژن 2.4.10 میں لینکس کے تحت شامل کیا گیا تھا.
بلاک آلات کے لئے ایک بنیادی طور پر ایک ہی انٹرفیس خام (8) میں بیان کیا جاتا ہے.
O_ASYNC
ایک سگنل بنائیں (سگنل ڈیفالٹ کے ذریعے، لیکن یہ fcntl (2) کے ذریعے تبدیل کیا جا سکتا ہے جب اس فائل descriptor پر ان پٹ یا پیداوار ممکن ہو جاتا ہے. یہ خصوصیت صرف ٹرمینلز، چھدو ٹرمینلز اور ساکٹ کے لئے دستیاب ہے. مزید تفصیلات کے لئے fcntl (2) دیکھیں.
O_LARGEFILE
32 فائلوں پر بڑے فائلوں کی حمایت کرتے ہیں، جو فائلوں کو 31 بٹس میں کھولنے کے لئے نمائندگی نہیں کی جاسکتی ہیں.
ان میں سے کچھ اختیاری پرچم فائل کو کھولنے کے بعد Fcntl کا استعمال کرتے ہوئے تبدیل کردی جا سکتی ہے.
دلیل موڈ نئی فائل تخلیق کی صورت میں استعمال کرنے کے لئے اجازت کی وضاحت کرتا ہے. یہ معمول کے راستے میں عمل کے افعال کی طرف سے نظر ثانی کی گئی ہے: پیدا شدہ فائل کی اجازت (موڈ اور ~ umask) ہیں . نوٹ کریں کہ یہ موڈ صرف نئی تخلیق کردہ فائل کے مستقبل تک رسائی پر لاگو ہوتا ہے؛ کھلی کال جو ایک پڑھنے والی فائل تخلیق کرتا ہے، اسے پڑھنے / لکھنے کے فائل کی تشریح کو اچھی طرح سے واپس لے سکتی ہے.
مندرجہ ذیل علامتی پابندیاں موڈ کیلئے فراہم کی جاتی ہیں:
S_IRWXU
00700 صارف (فائل کے مالک) نے پڑھنے، لکھنے اور اجازت کی اجازت دی ہے
S_IRUSR (S_IREAD)
00400 صارف نے پڑھنے کی اجازت دی ہے
S_IWUSR (S_IWITE)
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 | ORRUNC .
دوبارہ رقم VALUE
کھولنے اور تخلیق کرنے کے لئے نئے فائل کی وضاحت، یا -1 واپس آتے ہیں تو ایک غلطی (جس صورت میں، غلطی مناسب طریقے سے مقرر کی گئی ہے). نوٹ کریں کہ کھلا آلہ خاص فائلوں کو کھول سکتا ہے، لیکن تخلیق ان کی تخلیق نہیں کرسکتا ہے - اس کے بجائے منڈود (2) کا استعمال کریں.
UID نقشہ جات فعال ہونے کے ساتھ NFS فائل کے نظام پر، کھول سکتے ہیں فائل کی وضاحت کرنے والے، لیکن مثال کے طور پر پڑھنے (2) درخواستوں کو EACCES سے انکار کر دیا جاتا ہے . یہ ہے کیونکہ کلائنٹس کو اجازت کی جانچ پڑتال کی طرف سے کھلا کرتا ہے، لیکن سرور کے ذریعہ UID نقشہ جات کو پڑھنے اور لکھنے کے درخواستوں پر پیش کیا جاتا ہے.
اگر فائل کو تخلیق کیا جاتا ہے تو، اس کی ایٹم، ctime، مٹی ٹائمز موجودہ وقت پر مقرر کیے جاتے ہیں، اور اس طرح والدین ڈائریکٹری کے ctime اور وقت کے میدان ہیں. دوسری صورت میں، اگر فائل O_TRUNC پرچم کی وجہ سے نظر ثانی کی جاتی ہے تو، اس کی وقت اور وقت کے شعبوں کو موجودہ وقت مقرر کیا جاتا ہے.
غلطیاں
ایسٹسٹ
pathname پہلے سے موجود ہے اور O_CREAT اور O_EXCL استعمال کیا گیا تھا.
EISDIR
راستے کا نام ایک ڈائرکٹری سے منسلک ہے اور درخواست میں ملوث کردہ تک رسائی (جو کہ ہے، O_WRONLY یا O_RDWR مقرر ہے).
EACCES
فائل پر درخواست کی رسائی کی اجازت نہیں ہے، یا راستے کے نام میں ڈائریکٹریز میں سے ایک تلاش (عمل) اجازت کی اجازت نہیں دیتا، یا فائل ابھی تک موجود نہیں ہے اور والدین ڈائریکٹری تک رسائی لکھنا جائز نہیں ہے.
ENAMETOOLONG
راستہ نام بہت طویل تھا.
ENOENT
O_CREAT مقرر نہیں ہے اور نامزد کردہ فائل موجود نہیں ہے. یا، pathname میں ایک ڈائرکٹری جزو موجود نہیں ہے یا بے چینی علامتی لنک ہے.
ENOTDIR
pathname میں ایک ڈائرکٹری کے طور پر استعمال ہونے والے ایک جزو نہیں، حقیقت میں، ایک ڈائرکٹری، یا O_DIRECTORY کی وضاحت کی گئی تھی اور راستہ نام ڈائریکٹری نہیں تھا.
ENXIO
O_NONBLOCK | O_WRONLY مقرر کیا جاتا ہے، نامزد کردہ فائل ایک فیفا ہے اور پڑھنے کے لئے کوئی فائل نہیں ہے. یا، فائل ایک خاص آلہ ہے اور کوئی متعلقہ آلہ موجود نہیں ہے.
ENODEV
راستے کا نام کسی خاص آلہ سے متعلق ہے اور کوئی متعلقہ آلہ موجود نہیں ہے. (یہ ایک لینکس دانا بگ ہے - اس صورت حال میں ENXIO واپس آ جانا چاہئے.)
EROFS
راستے کا نام کسی فائل کو پڑھنے والے فائلوں پر منحصر ہوتا ہے اور رسائی لکھتا تھا.
ETXTBSY
راستے کا نام ایک قابل عمل تصویر سے مراد ہے جس میں اس وقت تک عملدرآمد کیا جا رہا ہے اور تک رسائی حاصل کرنے کی درخواست کی گئی تھی.
EFAULT
راستے کے نشان پوائنٹس آپ کے قابل ایڈریس کی جگہ کے باہر.
ELOOP
راستے کے نام کو حل کرنے میں بہت سارے علامتی لنکس کا سامنا کرنا پڑا، یا O_NOFOLLOW کی وضاحت کی گئی لیکن راستہ نام ایک علامتی لنک تھا.
ENOSPC
راستے کا نام تخلیق کیا جارہا تھا لیکن جس آلہ پر مشتمل پاس ورڈ نام کی نئی فائل نہیں ہے.
ENOMEM
ناکافی دانا میموری دستیاب تھا.
EMFILE
یہ عمل پہلے سے ہی فائلوں کی زیادہ سے زیادہ تعداد کھلی ہے.
ENFILE
نظام پر کھلی فائلوں کی کل تعداد میں حد تک پہنچ گئی ہے.
کے مطابق
SVR4، SVID، POSIX، X / OPEN، BSD 4.3 O_NOFOLLOW اور O_DIRECTORY پرچم لینکس - مخصوص ہیں. کسی کو اپنی تعریفیں حاصل کرنے کیلئے _GNU_SOURCE میکرو کی وضاحت کرنا پڑ سکتی ہے.
پابندیاں
این ایف ایس کے زیر اہتمام پروٹوکول میں بہت ساری افواج موجود ہیں، جو O_SYNC اور O_NDELAY کے درمیان متاثر ہوتے ہیں .
POSIX جھلکیاں O_SYNC ، O_DSYNC اور O_RSYNC کے مطابق مطابقت پذیری I / O کے تین مختلف قسم کے لئے فراہم کرتا ہے. فی الحال (2.1.130) یہ سب لینکس لینکس کے تحت ہیں.