C-তে Fstat ফাংশন

C Te Fstat Phansana



fstat() ফাংশন সিস্টেমকে তথ্য (কিছু ফাইল সম্পর্কিত) ফেরত দিতে কল করে যা সেই ফাইলের বর্ণনাকারীর উপর নির্ভর করে। এই ফাংশনটি ফাইলের জন্য তথ্য প্রাপ্ত করে যা ফাইল বর্ণনাকারীর সাথে সম্পর্কিত যা 'ফাইল্ডস' নামেও পরিচিত এবং তারপরে এই তথ্যটি মেমরির অবস্থানে লিখে যেখানে বাফারটি নির্দেশ করে। এই ফাংশনের রিটার্ন টাইপ হল একটি পূর্ণসংখ্যা। প্রোগ্রামটি সফলভাবে কার্যকর হলে এটি '0' মান প্রদান করে। অন্যথায়, ব্যর্থ সম্পাদনের ক্ষেত্রে এটি ফাংশনে একটি '-1' ফেরত দেয়। এই ফাংশনের জন্য এক্সিকিউশন ত্রুটি কিছু নির্দিষ্ট কারণে হতে পারে যেমন ফাংশনের ফাইলগুলিতে ফাইলের জন্য একটি অবৈধ বর্ণনাকারী থাকলে, যদি ফাইল থেকে ইনপুট এবং আউটপুটের পড়ার ত্রুটি ঘটে এবং যদি মেমরি অবস্থান (কাঠামো) যেখানে বাফারটি ফাইলের তথ্য লিখতে নির্দেশ করছে যে ফাইলের আকারের জন্য পর্যাপ্ত বরাদ্দ মেমরি নেই।

পদ্ধতি

এই নিবন্ধটি ফাইলের তথ্য পেতে fstat() ফাংশন বাস্তবায়নের অনুক্রমিক ক্রম অনুসরণ করে। আমরা প্রথমে এই ফাংশনের জন্য সিনট্যাক্স শিখি, এই ফাংশনের জন্য প্রয়োজনীয় প্যারামিটারগুলি। তারপর, আমরা fstat() ফাংশনের জন্য কিছু উদাহরণ কার্যকর করতে এই সিনট্যাক্সটি ব্যবহার করি।







বাক্য গঠন

fstat() ফাংশন ঘোষণা করার পদ্ধতি যা ফাইলের তথ্যে প্রোগ্রামের অ্যাক্সেস সক্ষম করে তা নিম্নলিখিত লাইনে উল্লেখ করা হয়েছে:



$ #include
$ int অবস্থা ( int ফিল্ডস , গঠন stat * buf ) ;

যখনই আমাদের প্রোগ্রামে ফাংশনটি কল করতে হবে, আমাদের প্রথমে হেডার ফাইলগুলি আমদানি করতে হবে যা এই ফাংশনটিকে 'sys/stat.h' হিসাবে সমর্থন করে। ফাংশনের জন্য রিটার্ন টাইপ সবসময় 'int' এবং প্যারামিটারে ডেটা টাইপ 'int' সহ 'fildes' অন্তর্ভুক্ত থাকে। আমরা যে ফাইল সম্পর্কে তথ্য জানতে চাই তার জন্য Fildes হল একটি বর্ণনাকারী। ফাংশনে দেওয়া আরেকটি প্যারামিটার হল পয়েন্টার 'বাফ'। এটি একটি 'struct stat' পয়েন্টার যা সেই কাঠামোর দিকে নির্দেশ করে যেখানে আমরা ফাইল সম্পর্কে ডেটা সংরক্ষণ করতে চাই। এটি fstat() ফাংশনের জন্য ইনপুট পরামিতিগুলির একটি সংক্ষিপ্ত বিবরণ।



উদাহরণ

আমরা আমাদের প্রোগ্রামের মাধ্যমে যেকোন/নির্দিষ্ট ফাইল সম্পর্কে তথ্য পেতে পূর্বে-উল্লেখিত বর্ণনা ব্যবহার করি এবং একটি প্রোগ্রাম চালাই। আমরা এক্সিকিউশনের জন্য মাইক্রোসফ্ট ভিজ্যুয়াল স্টুডিও সি কম্পাইলারে এই প্রোগ্রামটি লিখি। আমরা প্রথমে একটি প্রজেক্ট তৈরি করে এবং তারপর ভিজ্যুয়াল স্টুডিওতে C সংগ্রহস্থলে যোগ করে উদাহরণ দিয়ে শুরু করি। C ফাইলে প্রজেক্ট যোগ করার জন্য, আমরা প্রোজেক্টের নামের সাথে '.c' যোগ করি এবং প্রোজেক্টের সোর্স ফাইলে যোগ করি। প্রোজেক্ট তৈরির পর পরবর্তী ধাপে আমরা পরবর্তীতে প্রোগ্রামে ব্যবহার করতে পারি এমন ফাংশনের জন্য প্রয়োজনীয় সব লাইব্রেরি কল করা। যেহেতু আমরা এই নিবন্ধে fstat() ফাংশনের উদাহরণ বাস্তবায়ন করছি, তাই আমাদের হেডার ফাইল “sys/stat.h” অন্তর্ভুক্ত করতে হবে। ফাইলের তথ্যের জন্য, ফাইলটি কোথায় আছে তা আমাদের জানতে হবে। ডিভাইসের জন্য ডেটা টাইপ জানতে, আমরা হেডার 'টাইপ' অন্তর্ভুক্ত করি। h' প্রোগ্রামে।





ফাইলের তথ্যে ফাইলটি শেষবার খোলার সময় এবং এতে যে পরিবর্তন করা হয়েছিল তা অবশ্যই অন্তর্ভুক্ত করতে হবে। এই টাইম কলিং ফাংশনগুলি অ্যাক্সেস করার জন্য, আমরা হেডার ফাইল 'সময়' যোগ করি। h' এবং 'fcntl. h” ফাইল অনুমতি ফাংশন জন্য হেডার. শেষ শিরোনাম 'stdio. প্রোগ্রামে printf() এবং scanf() মেথড কল করার জন্য h” ফাইলটিও প্রোগ্রামে অন্তর্ভুক্ত করা হয়েছে। প্রোগ্রামে অন্তর্ভুক্ত করার জন্য আমরা যে হেডার ফাইলগুলি নিয়ে আলোচনা করেছি তা নিম্নরূপ:

$ #include
$ # অন্তর্ভুক্ত
$ # অন্তর্ভুক্ত
$ # অন্তর্ভুক্ত করুন
$ # অন্তর্ভুক্ত

পূর্বে উল্লিখিত হেডার ফাইলগুলি সফলভাবে প্রোগ্রামে আমদানি করার পরে, আমরা এখন একটি নির্দিষ্ট ফাইল সম্পর্কে তথ্য পেতে প্রোগ্রামটি তৈরি করি। আমরা 'প্রধান' নামের সাথে 'int' হিসাবে রিটার্ন টাইপযুক্ত ফাংশন ঘোষণা করি। এই প্রধান ফাংশনে, আমরা একটি 'char' অ্যারে ঘোষণা করি এবং এটিকে ফাইলের নাম বরাদ্দ করি যার জন্য আমাদের একটি তথ্য জানতে হবে। তারপর, আমরা ডেটা টাইপ 'struct' সহ একটি 'স্ট্যাট তথ্য' সংজ্ঞায়িত করি। এই struct একটি জায়গা যেখানে আমরা ফাইল সম্পর্কে তথ্য সঞ্চয়.



তারপর, আমরা “file_descriptor” নামের আরেকটি ভেরিয়েবল সংজ্ঞায়িত করি এবং ডাটা টাইপকে “পূর্ণসংখ্যা” হিসেবে উল্লেখ করি। “যদি কন্ডিশন”-এ, ফাইলটি বিদ্যমান থাকলে আমরা রিড এবং রাইট অপারেশনের জন্য অনুমতি চাই, “S_IWUSR” এবং অ্যারের নাম “create()” ফাংশনে পাস করে যা ফাইলের জন্য অনুমতির জন্য কল করে যদি এটি বিদ্যমান বা অন্যথায় একটি নতুন ফাইল তৈরি করুন। আমরা এই create() ফাংশনটিকে “if condition”-এ পাস করি যা বলে যদি create() ফাংশনের মান শূন্যের কম হয় তাহলে একটি ত্রুটি তৈরি করে যা ফাইলটি তৈরি করতে হবে। যদি fstat() প্যারামিটার সহ “file_descriptor” এবং “information” এবং “যে অবস্থানে ফাইলের তথ্য সংরক্ষণ করা হয় সেই অবস্থানের ঠিকানা” শূন্যের সমান না হলে, আমরা fstat() ফেরত দেওয়া মান প্রদর্শন করি যা ফাইলের তথ্য। . এবং আমরা তথ্যগুলিকে বৈশিষ্ট্য আকারে প্রিন্ট করি, যেমন ডিভাইস আইডি যেখানে ফাইলটি সংরক্ষণ করা হয়, ডিভাইসের ইনোড নম্বর, ফাইলের সুরক্ষা মোড, ব্যবহারকারী আইডি, গ্রুপ আইডি এবং লিঙ্কের সংখ্যা (হার্ড ফর্ম)।

এই বৈশিষ্ট্যগুলি প্রদর্শন করার পরে, আমরা স্টেটমেন্ট থেকে বেরিয়ে আসি এবং close() পদ্ধতি ব্যবহার করে ফাইলটি বন্ধ করি। তারপর, unlink() পদ্ধতিতে কল করে ফাইলটি আনলিঙ্ক করুন।

#include
# অন্তর্ভুক্ত
# অন্তর্ভুক্ত
# অন্তর্ভুক্ত করুন
# অন্তর্ভুক্ত

প্রধান ( ) {
চর অ্যারে [ ] = 'amp.file' ;
গঠন পরিসংখ্যান তথ্য ;
int ফাইল স্ক্রিপ্টর ;
যদি ( ( ফাইল স্ক্রিপ্টর = তৈরি ( অ্যারে , S_IWUSR ) ) < 0 )
ভুল ( 'creat() ত্রুটি' ) ;
অন্য {
যদি ( অবস্থা ( ফাইল স্ক্রিপ্টর , এবং তথ্য ) != 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() ধারণাটি বোঝার জন্য যথাসাধ্য চেষ্টা করেছি এবং আমরা আশা করি এটি আপনার প্রোগ্রামগুলিতে আপনাকে সাহায্য করবে।