لینکس کمانڈ کھولیں سیکھیں

مطمئن

/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) یہ سب لینکس لینکس کے تحت ہیں.