C میں Fstat فنکشن

C My Fstat Fnkshn



fstat() فنکشن سسٹم کو معلومات (کچھ فائل کے حوالے سے) واپس کرنے کے لیے کال کرتا ہے جو اس فائل کے ڈسکرپٹر پر منحصر ہے۔ یہ فنکشن اس فائل کے لیے معلومات حاصل کرتا ہے جو فائل ڈسکرپٹر سے وابستہ ہے جسے 'fildes' بھی کہا جاتا ہے اور پھر اس معلومات کو میموری کے مقام پر لکھتا ہے جہاں بفر اشارہ کر رہا ہے۔ اس فنکشن کی واپسی کی قسم ایک عدد ہے۔ اگر پروگرام کامیابی کے ساتھ عمل میں آتا ہے تو یہ '0' قدر واپس کرتا ہے۔ بصورت دیگر، یہ ناکام عمل درآمد کی صورت میں فنکشن میں '-1' لوٹاتا ہے۔ اس فنکشن کے لیے ایگزیکیوشن کی خرابی کچھ خاص وجوہات کی وجہ سے ہو سکتی ہے جیسے کہ اگر فنکشن کے فائلز میں فائل کے لیے غلط ڈسکرپٹر ہے، اگر فائل سے ان پٹ اور آؤٹ پٹ کے لیے پڑھنے میں خرابی واقع ہوتی ہے، اور اگر میموری لوکیشن (سٹرکچر) جہاں بفر فائل کی معلومات لکھنے کی طرف اشارہ کر رہا ہے فائل کے سائز کے لیے کافی میموری مختص نہیں ہے۔

طریقہ کار

یہ مضمون فائل کی معلومات حاصل کرنے کے لیے fstat() فنکشن کو لاگو کرنے کے لیے ترتیب وار ترتیب کی پیروی کرتا ہے۔ ہم سب سے پہلے اس فنکشن کے لیے نحو سیکھتے ہیں، اس فنکشن کے لیے درکار پیرامیٹرز۔ پھر، ہم اس نحو کو استعمال کرتے ہیں fstat() فنکشن کے لیے کچھ مثالیں انجام دینے کے لیے۔







نحو

fstat() فنکشن کا اعلان کرنے کا طریقہ جو پروگرام کو فائل کی معلومات تک رسائی کے قابل بناتا ہے درج ذیل لائن میں بیان کیا گیا ہے۔



$ #include
$ int حالت ( int فائلز ، ساخت اسٹیٹ * buf ) ;

جب بھی ہمیں اپنے پروگرام میں فنکشن کو کال کرنا ہو تو ہمیں پہلے ہیڈر فائلز کو امپورٹ کرنا پڑتا ہے جو اس فنکشن کو 'sys/stat.h' کے طور پر سپورٹ کرتی ہیں۔ فنکشن کے لیے واپسی کی قسم ہمیشہ 'int' ہوتی ہے اور پیرامیٹر میں ڈیٹا ٹائپ 'int' کے ساتھ 'fildes' شامل ہوتا ہے۔ Fildes اس فائل کے لیے ایک وضاحت کنندہ ہے جس کے بارے میں ہم معلومات جاننا چاہتے ہیں۔ ایک اور پیرامیٹر جو فنکشن کو دیا جاتا ہے وہ ہے پوائنٹر 'بف'۔ یہ ایک 'struct stat' پوائنٹر ہے جو اس ڈھانچے کی طرف اشارہ کرتا ہے جہاں ہم فائل کے بارے میں ڈیٹا محفوظ کرنا چاہتے ہیں۔ یہ fstat() فنکشن کے لیے ان پٹ پیرامیٹرز کی مختصر تفصیل ہے۔



مثال

ہم اپنے پروگرام کے ذریعے کسی بھی / مخصوص فائل کے بارے میں معلومات حاصل کرنے کے لیے واضح طور پر بیان کردہ تفصیل کا استعمال کرتے ہیں اور ایک پروگرام کو چلاتے ہیں۔ ہم اس پروگرام کو مائیکروسافٹ ویژول اسٹوڈیو سی کمپائلر میں عمل درآمد کے لیے لکھتے ہیں۔ ہم مثال کے ساتھ شروع کرتے ہیں پہلے ایک پروجیکٹ بنا کر اور پھر اسے بصری اسٹوڈیو میں C ذخیروں میں شامل کر کے۔ پروجیکٹ کو C فائلوں میں شامل کرنے کے لیے، ہم پروجیکٹ کے نام کے ساتھ '.c' شامل کرتے ہیں اور اسے پروجیکٹ کی سورس فائل میں شامل کرتے ہیں۔ پروجیکٹ کی تخلیق کے بعد اگلا مرحلہ ان فنکشنز کے لیے تمام مطلوبہ لائبریریوں کو کال کرنا ہے جنہیں ہم بعد میں پروگرام میں استعمال کر سکتے ہیں۔ چونکہ ہم اس آرٹیکل میں fstat() فنکشن کے لیے مثال کو نافذ کر رہے ہیں، ہمیں ہیڈر فائل 'sys/stat.h' کو شامل کرنا ہوگا۔ فائل کی معلومات کے لیے، ہمیں ڈیوائس کی قسم جاننے کی ضرورت ہے جہاں فائل موجود ہے۔ ڈیوائس کے لیے ڈیٹا کی قسم جاننے کے لیے، ہم ہیڈر 'ٹائپ' کو شامل کرتے ہیں۔ h' پروگرام میں۔





فائل کی معلومات میں وہ وقت شامل ہونا چاہیے جب فائل کو آخری بار کھولا گیا تھا اور اس میں جو ترمیم کی گئی تھی۔ ان ٹائم کالنگ فنکشنز تک رسائی کے لیے، ہم ہیڈر فائل 'ٹائمز' کو شامل کرتے ہیں۔ h' اور 'fcntl. h' فائل کی اجازت کے افعال کے لیے ہیڈر۔ آخری ہیڈر 'stdio. پروگرام میں پرنٹف() اور اسکینف() طریقوں کو کال کرنے کے لیے پروگرام میں h” فائل بھی شامل ہے۔ پروگرام میں شامل ہونے کے لیے ہم نے جن ہیڈر فائلوں پر تبادلہ خیال کیا وہ درج ذیل ہیں:

$ #include
$ #include
$ #include
$ # شامل کریں
$ #include

پہلے ذکر کردہ ہیڈر فائلوں کو پروگرام میں کامیابی کے ساتھ درآمد کرنے کے بعد، اب ہم ایک مخصوص فائل کے بارے میں معلومات حاصل کرنے کے لیے پروگرام بناتے ہیں۔ ہم واپسی کی قسم والے فنکشن کو 'مین' کے نام کے ساتھ 'int' قرار دیتے ہیں۔ اس مین فنکشن میں، ہم ایک 'char' ارے کا اعلان کرتے ہیں اور اسے اس فائل کا نام تفویض کرتے ہیں جس کے لیے ہمیں معلومات جاننے کی ضرورت ہوتی ہے۔ پھر، ہم ڈیٹا کی قسم 'struct' کے ساتھ ایک 'stat information' کی وضاحت کرتے ہیں۔ یہ ڈھانچہ ایک ایسی جگہ ہے جہاں ہم فائل کے بارے میں معلومات کو محفوظ کرتے ہیں۔



پھر، ہم ایک اور متغیر کی وضاحت کرتے ہیں 'file_descriptor' نام کے ساتھ ڈیٹا کی قسم کو 'انٹیجر'۔ 'اگر کنڈیشن' میں، ہم فائل کے موجود ہونے کی صورت میں پڑھنے اور لکھنے کے آپریشنز کے لیے اجازت طلب کرتے ہیں، 'S_IWUSR' اور صف کا نام 'create()' فنکشن میں منتقل کرتے ہیں جو فائل کے لیے اجازت طلب کرتا ہے اگر یہ موجود ہے یا دوسری صورت میں ایک نئی فائل بنائیں۔ ہم اس create() فنکشن کو 'if condition' میں منتقل کرتے ہیں جس میں کہا گیا ہے کہ اگر create() فنکشن ویلیو صفر سے کم ہے تو ایک ایرر پیدا کرتا ہے جسے فائل بنانے کی ضرورت ہے۔ اگر fstat() پیرامیٹرز کے ساتھ 'file_descriptor' اور 'information' اور 'اس جگہ کا پتہ جہاں فائل کی معلومات کو محفوظ کیا گیا ہے' صفر کے برابر نہیں ہے، تو ہم fstat() واپس آنے والی قدر ظاہر کرتے ہیں جو کہ فائل کی معلومات ہے۔ . اور ہم معلومات کو اوصاف کی شکل میں پرنٹ کرتے ہیں، جیسے ڈیوائس آئی ڈی جس میں فائل محفوظ ہے، ڈیوائس کا انوڈ نمبر، فائل کا پروٹیکشن موڈ، یوزر آئی ڈی، گروپ آئی ڈی اور لنک کا نمبر (ہارڈ فارم)۔

ان اوصاف کو ظاہر کرنے کے بعد، ہم بیانات سے باہر آتے ہیں اور close() طریقہ استعمال کرتے ہوئے فائل کو بند کرتے ہیں۔ پھر، unlink() طریقہ کو کال کرکے فائل کو ان لنک کریں۔

#include
#include
#include
# شامل کریں
#include

مرکزی ( ) {
چار صف [ ] = 'amp.file' ;
ساخت اسٹیٹ کی معلومات ;
int فائل اسکرپٹ ;
اگر ( ( فائل اسکرپٹ = بنایا ( صف ، S_IWUSR ) ) < 0 )
غلطی ( 'تخلیق () غلطی' ) ;
اور {
اگر ( حالت ( فائل اسکرپٹ ، اور معلومات ) != 0 )
غلطی ( 'fstat() خرابی' ) ;
اور {
رکھتا ہے ( 'fstat() اقدار:' ) ;
printf ( ' inode: %d \n ' ، ( int ) معلومات st_ino ) ;
printf ( ' device_id: %d \n ' ، ( int ) معلومات st_dev ) ;
printf ( ڈیوائس کا موڈ: %08x \n ' ، معلومات st_mode ) ;
printf ( ' no_of_hard_links: %d \n ' ، معلومات st_nlink ) ;
printf ( ' u_id: %d \n ' ، ( int ) معلومات st_uid ) ;
printf ( ' g_id: %d \n ' ، ( int ) معلومات st_gid ) ;
}
بند کریں ( فائل اسکرپٹ ) ;
لنک ختم کریں ( صف ) ;
}
}

پروگرام پہلے فائل آپریشن کے لیے اجازت تک رسائی حاصل کرے گا اور پھر اس میں موجود ڈیٹا کو پڑھے گا اور اسے مختص میموری کی جگہ پر لکھے گا۔ وہ اوصاف جو ہم نے پروگرام کو فائل سے ظاہر کرنے کے لیے دیے ہیں وہ آؤٹ پٹ میں دکھائے گئے ہیں۔

نتیجہ

ہم نے فائل کی معلومات تک رسائی کے لیے fstat() فنکشن کا استعمال کیا۔ ہم نے پہلے fstat() فنکشن کا نحو سیکھا جس کی وضاحت فنکشن کے پیرامیٹرز کی مکمل تفصیل کے ساتھ کی گئی ہے۔ پھر، ہم نے اس فنکشن کے لیے ایک پروگرام لکھا جہاں ہم نے پہلے اپنے فائل کے مالک کی اجازت تک رسائی حاصل کی اور پھر فائل کو پڑھا اور فائل کی معلومات سے وہ صفات ظاہر کیں جو ہم چاہتے تھے۔ ہم نے آپ کو fstat() کے تصور کو سمجھنے کی پوری کوشش کی اور ہمیں امید ہے کہ یہ آپ کے پروگراموں میں آپ کی مدد کرے گا۔