সি ল্যাঙ্গুয়েজে লিখুন() ফাংশন

Si Lyanguyeje Likhuna Phansana



প্রোগ্রামিং-এ ফাইল ম্যানেজমেন্ট এমন একটি কাজ যা প্রোগ্রামারকে অবশ্যই সাবলীল হতে হবে। বিভিন্ন খোলা, পড়া এবং লেখার ফাংশন সম্পর্কে জ্ঞান থাকা অপরিহার্য কারণ ফাইলগুলিতে সংরক্ষিত তথ্য সংরক্ষণ বা নিষ্পত্তি করার জন্য আমাদের সর্বদা তাদের প্রয়োজন।

এই লিনাক্স ইঙ্গিত নিবন্ধে, আপনি ফাইলগুলি লিখতে write() ফাংশনটি কীভাবে ব্যবহার করবেন তা শিখবেন।







আমরা এই এলা, এর সিনট্যাক্স, কল পদ্ধতি, ইনপুট এবং আউটপুট আর্গুমেন্ট, প্রতিটি ক্ষেত্রে এটি যে ধরনের ডেটা গ্রহণ করে এবং কীভাবে এটি সঠিকভাবে ঘোষণা করতে হয় সে সম্পর্কে সবকিছু ব্যাখ্যা করব।



তারপর, আমরা এই ফাংশনটির ব্যবহারকে ব্যবহারিক উদাহরণে রেখে যা শিখেছি তা প্রয়োগ করি যা আমরা কোড স্নিপেট এবং চিত্র সহ আপনার জন্য প্রস্তুত করেছি, C ভাষায় write() এর ব্যবহার দেখিয়েছি।



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





সি ল্যাঙ্গুয়েজে Write() ফাংশনের সিনট্যাক্স

int লিখুন ( int fd , অকার্যকর * buf , size_t n ) ;

সি ল্যাঙ্গুয়েজে Write() ফাংশনের বর্ণনা

write() ফাংশনটি একটি খোলা ফাইলে লেখা হয়। এই ফাংশনটি 'fd' ইনপুট আর্গুমেন্টে তার বর্ণনাকারীর দ্বারা নির্দিষ্ট করা ফাইলটিতে 'buf' দ্বারা নির্দেশিত বাফারের বিষয়বস্তু লিখে। ফাইলটিতে যে ব্লকটি লিখতে হবে তার আকার অবশ্যই 'n' ইনপুট আর্গুমেন্টে উল্লেখ করতে হবে।

write() ফাংশন দিয়ে লিখতে সক্ষম হওয়ার জন্য, ফাইলটি open() ফাংশন দিয়ে খুলতে হবে এবং O_RDONLY বা O_RDWR অ্যাট্রিবিউটে উল্লেখ করতে হবে। অন্যথায়, এই ফাংশন কোন প্রভাব আছে.



কলটি সফল হলে, এটি প্রবেশ করানো অক্ষরের সংখ্যা ফেরত দেয়। লেখার সময় যদি একটি ত্রুটি ঘটে তবে এটি -1 এর সমান ফলাফল প্রদান করে। শনাক্তকরণ কোড যা ত্রুটি নির্দেশ করে তা errno গ্লোবাল ভেরিয়েবল থেকে পুনরুদ্ধার করা যেতে পারে যা “errno.h” শিরোনামে সংজ্ঞায়িত করা হয়েছে।

পরে, আপনি একটি বিভাগ পাবেন যেখানে আমরা ব্যাখ্যা করব কিভাবে এই ফাংশনের সবচেয়ে সাধারণ ত্রুটিগুলি সনাক্ত এবং সনাক্ত করতে হয়।

write() ফাংশন 'unistd.h' হেডারে সংজ্ঞায়িত করা হয়েছে। ফাইল খোলার জন্য বৈশিষ্ট্য এবং মোড সংজ্ঞায়িত ফ্ল্যাগ 'fcntl.h' এ সংজ্ঞায়িত করা হয়েছে। open() এবং write() ফাংশন ব্যবহার করতে, আপনাকে অবশ্যই এই শিরোনামগুলিকে আপনার কোডে অন্তর্ভুক্ত করতে হবে:

#include

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

সি ল্যাঙ্গুয়েজে Write() ফাংশন ব্যবহার করে কিভাবে একটি ফাইলে লিখতে হয়

এই উদাহরণে, আমরা 'example.txt' নামে একটি খালি টেক্সট ফাইল লিখি যা আমরা আগে 'ডকুমেন্টস' ডিরেক্টরিতে তৈরি করেছি।

প্রথম ধাপ হল প্রয়োজনীয় শিরোনাম সন্নিবেশ করানো। main() ফাংশনের ভিতরে, open() ফাংশন দিয়ে ফাইলটি খুলুন। এটি করার জন্য, আমাদের 'fd' পূর্ণসংখ্যা ঘোষণা করতে হবে যা ফাইল বর্ণনাকারী হিসাবে কাজ করে এবং 1024-অক্ষরের 'বাফ' বাফার অ্যারে যা আমরা ফাইলটিতে লিখতে চাই এমন পাঠ্য রয়েছে। এই বাফারে, আমরা GCC ম্যান পৃষ্ঠার প্রথম অনুচ্ছেদটিকে “example.txt” ফাইলে লেখার জন্য সংরক্ষণ করি।

রিড/রাইট মোডে open() ফাংশন দিয়ে ফাইলটি খোলার পরে, আমরা write() ফাংশন কল করে ফাইলটিতে লিখি এবং প্রথম ইনপুট আর্গুমেন্ট হিসাবে 'fd' ফাইলের বর্ণনাকারীকে পাস করি, দ্বিতীয় হিসাবে 'buf' পয়েন্টার। argument, এবং তৃতীয় আর্গুমেন্ট হিসাবে অ্যারেতে থাকা স্ট্রিংয়ের আকার, যা আমরা strlen() ফাংশন দিয়ে পাই। এখানে এই উদাহরণের জন্য কোড:

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

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

#include

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

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

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

#include

অকার্যকর প্রধান ( )

{

int fd ;

চর বাফার [ 1024 ] = 'আপনি যখন GCC চালু করেন, তখন এটি সাধারণত প্রিপ্রসেসিং, কম্পাইলেশন, অ্যাসেম্বলি এবং লিঙ্কিং করে। সামগ্রিক বিকল্পগুলি আপনাকে মধ্যবর্তী পর্যায়ে এই প্রক্রিয়াটি বন্ধ করতে দেয়। উদাহরণস্বরূপ, -c বিকল্পটি লিঙ্কার চালানোর জন্য বলে না। তারপর আউটপুটটি গঠিত হয় অ্যাসেম্বলার দ্বারা অবজেক্ট ফাইল আউটপুট।' ;

fd = খোলা ( 'ডকুমেন্টস/example.txt' , O_RDWR ) ;

লিখুন ( fd , এবং বাফার , strlen ( বাফার ) ) ;

বন্ধ ( fd ) ;

}

নিচের চিত্রে, আমরা লিখতে() ফাংশন দ্বারা লেখা খোলা ফাইলের সাথে এই কোডের সংকলন এবং সম্পাদন দেখতে পাচ্ছি:

সি ল্যাঙ্গুয়েজে Write() ফাংশন সহ একটি ফাইলের শেষে একটি টেক্সট কিভাবে যোগ করবেন

O_WRONLY বা O_RDWR ফ্ল্যাগ উল্লেখ করে একটি ফাইল খোলা হলে, কার্সার প্রথম অবস্থানে চলে যায় এবং সেখান থেকে লেখা শুরু করে।

একটি ফাইলের শেষে একটি টেক্সট যোগ করার জন্য, ফাইলটি খোলার সময় ওপেন() ফাংশনের ইনপুট ফ্ল্যাগ আর্গুমেন্টে O_WRONLY বা O_RDWR ফ্ল্যাগ এবং O_ APPEND পতাকার মধ্যে একটি লজিক্যাল বা অপারেশন দ্বারা নির্দিষ্ট করা আবশ্যক। এইভাবে, কার্সারটি ফাইলের শেষে স্থাপন করা হয় এবং সেখান থেকে লেখা শুরু হয়। এছাড়াও, fcntl() ফাংশন দিয়ে ফাইলটি খোলার পরে বৈশিষ্ট্য এবং লেখার মোড পরিবর্তন করা যেতে পারে।

নিম্নলিখিত উদাহরণে, আপনি একটি কোড দেখতে পারেন যা ফাইলের শেষে একটি পাঠ্য যোগ করে যা আমরা আগের উদাহরণে লিখেছিলাম:

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

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

#include

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

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

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

#include

অকার্যকর প্রধান ( )

{

int fd ;

চর বাফার [ 1024 ] = 'এই লেখাটি যোগ করা হয়েছে। এই লেখাটি যোগ করা হয়েছে।' ;

fd = খোলা ( 'ডকুমেন্টস/example.txt' , O_RDWR | O_APPEND ) ;

লিখুন ( fd , এবং বাফার , strlen ( বাফার ) ) ;

বন্ধ ( fd ) ;

}

নিম্নলিখিত চিত্র যোগ করা পাঠ্য দেখায়. আপনি দেখতে পাচ্ছেন, এই খোলার পদ্ধতির সাহায্যে, write() ফাংশন ফাইলটিতে লেখা শেষ অক্ষরের অবস্থানে লেখা শুরু করে:

সি ল্যাঙ্গুয়েজে Write() ফাংশন ব্যবহার করার সময় যে ত্রুটিগুলি ঘটতে পারে তা কীভাবে সনাক্ত এবং সনাক্ত করবেন

write() ব্যবহার করে বিভিন্ন ত্রুটি তৈরি হতে পারে। যখন এটি ঘটে, এই ফাংশনটি -1 এর সমান ফলাফল প্রদান করে।

একটি ত্রুটি ঘটেছে কিনা তা নির্ধারণ করার সবচেয়ে সহজ উপায় হল একটি 'if' শর্ত ব্যবহার করা যেখানে শর্তটি -1 এর রিটার্ন মান। এখন, আসুন দেখি কোন ত্রুটি ঘটেছে কিনা তা নির্ধারণ করতে আপনি কীভাবে এই পদ্ধতিটি ব্যবহার করতে পারেন:

int n ;

n = লিখুন ( fd , এবং বাফার , strlen ( বাফার ) ) ;

যদি ( n == - 1 ) {

printf ( 'ফাইলটি লেখার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে।' ) ;

}

যদি write() ফাংশন একটি ত্রুটির সাথে ফিরে আসে, এটি 'if' স্টেটমেন্টে রূপান্তরিত হয় এবং বার্তাটি প্রিন্ট করে, ' ফাইলটি লেখার চেষ্টা করার সময় একটি ত্রুটি ঘটেছে৷ '

যখন একটি ত্রুটি ঘটে, একটি সংখ্যাসূচক কোড স্বয়ংক্রিয়ভাবে errno গ্লোবাল ভেরিয়েবলে সংরক্ষিত হয় যা 'errno.h' শিরোনামে সংজ্ঞায়িত করা হয়েছে। এই কোডটি যে ত্রুটি ঘটেছে তা সনাক্ত করতে ব্যবহার করা যেতে পারে।

নিম্নলিখিত ত্রুটিগুলির একটি উদ্ধৃতি যা write() ফাংশন তৈরি করতে পারে এবং যেগুলি প্রতিটি ত্রুটির একটি সংক্ষিপ্ত বিবরণ এবং সংশ্লিষ্ট পূর্ণসংখ্যা মানের সাথে “errno.h” শিরোনামে সংজ্ঞায়িত করা হয়েছে:

সংজ্ঞা ভুল মান ত্রুটি
EAGAIN এগারো আবার চেষ্টা কর.
ইবিএডিএফ 9 ভুল ফাইল নম্বর।
EDESTADDRREQ ৮৯ গন্তব্য ঠিকানা প্রয়োজন.
EDQUOT 122 কোটা ছাড়িয়ে গেছে।
EFAULT 14 ভুল ঠিকানা।
EFBIG 27 ফাইল খুব বড়।
EINTR 4 সিস্টেম কল ব্যাহত হয়েছে।
একক পছন্দ 22 অবৈধ যুক্তি।
EIO 5 I/O ত্রুটি।
ENOSPC 28 যন্ত্রে আর কোন স্থান অবশিষ্ট নেই.
আপার 1 অপারেশন অনুমোদিত নয়।

একটি ত্রুটি সনাক্ত করার সবচেয়ে সহজ উপায় হল একটি সুইচ খোলা যেখানে errno ভেরিয়েবল হল জাম্প কন্ডিশন এবং প্রতিটি ক্ষেত্রে একটি ত্রুটি সংজ্ঞা।

এর পরে, আসুন একটি উদাহরণ দেখি যেখানে আমরা একটি নেতিবাচক চিহ্ন সহ একটি বর্ণনাকারী প্রবেশ করার চেষ্টা করি, যার ফলে একটি ত্রুটি দেখা দেয়। একটি ত্রুটি সনাক্ত করতে, আমরা 'যদি' শর্তটি ব্যবহার করি যা আমরা আগের স্নিপেটে দেখেছি। এটি সনাক্ত করতে, আমরা তিনটি সবচেয়ে সাধারণ ত্রুটি সহ একটি সুইচ খুলি যা এই ফাংশনটি তৈরি করতে পারে।

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

#include

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

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

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

#include

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

অকার্যকর প্রধান ( )

{

int fd ;

int n ;

চর বাফার [ 1024 ] = 'ওহে বিশ্ব' ;

fd = খোলা ( 'ডকুমেন্টস/example.txt' , O_RDWR ) ;

n = লিখুন ( - 2 , এবং বাফার , strlen ( বাফার ) ) ;

যদি ( n == - 1 ) {

সুইচ ( ভুল ) {

মামলা ইবিএডিএফ : {

printf ( 'খারাপ ফাইল নম্বর। ত্রুটি: %i \n ' , ভুল ) ;

বিরতি ; }

মামলা একক পছন্দ : {

printf ( 'অবৈধ যুক্তি। ত্রুটি: %i \n ' , ভুল ) ;

বিরতি ; }

মামলা EIO : {

printf ( 'I/O ত্রুটি। ত্রুটি: %i \n ' , ভুল ) ;

বিরতি ; }

}

}

}

আমরা নীচের চিত্রে দেখতে পাচ্ছি, একটি ইনপুট আর্গুমেন্ট হিসাবে একটি অবৈধ বর্ণনাকারী পাস করা হলে write() ফাংশন একটি ত্রুটি প্রদান করে। errno ভেরিয়েবল থেকে যে মানটি পুনরুদ্ধার করা হয় তা একটি জাম্প কন্ডিশন হিসাবে ব্যবহার করা হয় যা আমাদের EBADF ক্ষেত্রে প্রবেশ করার সময় ত্রুটি সনাক্ত করতে দেয়।

উপসংহার

এই লিনাক্স ইঙ্গিত নিবন্ধে, আমরা আপনাকে দেখিয়েছি কিভাবে ফাইলে লেখার জন্য write() ফাংশন ব্যবহার করতে হয়। আমরা আপনাকে এই ফাংশনের সিনট্যাক্স এবং তাত্ত্বিক বিবরণ দেখিয়েছি। আমরা ত্রুটি সনাক্তকরণ এবং সনাক্তকরণ পদ্ধতিগুলিও ব্যাখ্যা করেছি যাতে এই সমস্যাগুলি দ্রুত সমাধান করার জন্য আপনার কাছে প্রয়োজনীয় সরঞ্জাম এবং কৌশল থাকে৷

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

আমরা আপনাকে দেখিয়েছি কিভাবে ফাইলের শুরুতে বা শেষে একটি টেক্সট সন্নিবেশ করার জন্য ফাইল ওপেন মোড নির্বাচন করতে হয় এবং এই বৈশিষ্ট্যগুলি পরিবর্তন করার জন্য কী কী ফাংশন পাওয়া যায়।