কিভাবে সি -তে ওপেন সিস্টেম কল ব্যবহার করবেন

How Use Open System Call C



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

লাইব্রেরি ইনস্টল করুন

সি ভাষার জন্য কিছু অতিরিক্ত লাইব্রেরি প্যাকেজ পূর্বশর্ত হিসাবে ইনস্টল করা প্রয়োজন। প্রথমত, সিস্টেম কল সম্পর্কিত তথ্য যাচাই করার জন্য আপনাকে manpages-dev প্যাকেজ ইনস্টল করতে হবে। কার্যকলাপ এলাকা থেকে কমান্ড লাইন টার্মিনাল খুলুন এবং ম্যানপেইজ ইনস্টল করার জন্য নিচের নির্দেশটি কার্যকর করুন।







$ sudo apt manpages ইনস্টল করুন-দেব



ইনস্টলেশন সমাপ্তির আউটপুট নীচে দেওয়া হয়েছে।







এখন আমরা নিচের মত ম্যান কমান্ড ব্যবহার করে ওপেন সিস্টেম কল চেক করব।

$ মানুষ2খোলা



ওপেন সিস্টেম কলের আউটপুট ম্যান পৃষ্ঠাটি নীচে দেখানো হয়েছে। আপনি এটি সম্পর্কিত অতিরিক্ত তথ্য দেখতে পারেন। প্রস্থান করার জন্য q বোতাম টিপুন।

উপরের সিনট্যাক্স সিস্টেম লাইনের জন্য প্রয়োজনীয় লাইব্রেরির প্রথম তিনটি লাইন যোগ করে। ওপেন সিস্টেম কলের জন্য তিনটি সিনট্যাক্স পাওয়া যায়। প্রথম সিনট্যাক্স পথের নাম দেখায়, যা একটি ফাইলের নাম যা খুলতে হবে। দ্বিতীয় প্যারামিটার, পতাকা, একটি ফাইলের মোড দেখায়, যেমন, পড়ুন বা লিখুন। ফাইলটির অস্তিত্ব না থাকলে দ্বিতীয় সিনট্যাক্স ব্যবহার করা যেতে পারে। প্যারামিটার মোডটি ফাইলে বিশেষাধিকার দেখানোর জন্য ব্যবহৃত হয়।

উবুন্টু 20.04 লিনাক্স বিতরণে সি কোড ডিবাগ করার জন্য এখন জি সি সি কম্পাইলার ইনস্টল করার সময়। এর জন্য, শেলটিতে নীচের নির্দেশটি কার্যকর করুন।

$ sudo apt gcc ইনস্টল করুন

GCC কম্পাইলার ইনস্টল করা চালিয়ে যাওয়ার জন্য আপনাকে Y আলতো চাপতে হবে, অন্যথায় ইনস্টলেশন বন্ধ করতে n বাটনে চাপ দিন। সুতরাং y বোতাম টিপুন এবং চালিয়ে যেতে Enter টিপুন।

সমাপ্তির আউটপুট নিচে দেখানো হয়েছে।

উদাহরণ 01

আসুন একটি ওপেন সিস্টেম কলের খুব সহজ উদাহরণ দেখি। প্রথমে, কমান্ড শেলটি খুলুন এবং একটি সহজ টেক্সট ফাইল test.txt তৈরি করুন যা সাধারণ স্পর্শ কমান্ড ব্যবহার করে নিম্নরূপ:

$স্পর্শtest.txt

ম্যানুয়ালি এতে কিছু ডেটা যোগ করুন। আপনি নীচের cat কমান্ড ব্যবহার করে একটি ফাইলে ডেটা দেখতে পারেন।

$বিড়ালtest.txt

এখন শেলটিতে একটি ন্যানো কমান্ড ব্যবহার করে একটি নতুন সি ফাইল তৈরি করি, যেমনটি নীচে দেখানো হয়েছে।

$ন্যানোনতুন সি

নিচের GNU ন্যানো ফাইলটি খোলা হবে। আপনাকে নিচের সি ভাষা কোডটি টাইপ করতে হবে। আপনি দেখতে পারেন আমরা সি কোডের জন্য প্রয়োজনীয় লাইব্রেরি প্যাকেজগুলি সঠিকভাবে সম্পাদন করার জন্য যুক্ত করেছি। তারপরে, আমরা একটি ওপেন সিস্টেম কলে কাজ করার প্রধান ফাংশন সংজ্ঞায়িত করেছি। আমরা দুটি পূর্ণসংখ্যা ভেরিয়েবল ঘোষণা করেছি। N ভেরিয়েবল বাফার মান গণনা করতে ব্যবহৃত হয়, এবং fd ফাইল বর্ণনাকারীর জন্য ব্যবহৃত হয়। আমরা ক্যারেক্টার টাইপ বাফার অ্যারেকে 50 আকারের বুফ হিসেবে ঘোষণা করেছি। ফাইল test.txt থেকে বিষয়বস্তু পড়তে এবং ফাইল বর্ণনাকারীর কাছে ফেরত পাঠানোর জন্য ওপেন সিস্টেম কল ব্যবহার করা হয়েছে। O_RDONLY পড়ার উদ্দেশ্যে ব্যবহার করা হয়েছে। পরবর্তী লাইনটি বাফার থেকে 10 বাইট সংগ্রহ করার জন্য রিড সিস্টেম কলটি দেখায় এবং এটিকে পূর্ণসংখ্যা n এ ফেরত দেয়। এছাড়াও, রাইট কমান্ডটি কনটেন্ট বা বাফার ডেটা ফাইল ডিসক্রিপটরে লিখতে ব্যবহার করা হয়েছে, যা আমাদের ক্ষেত্রে এখনই আউটপুট স্ক্রিন। Ctrl+S ব্যবহার করে এই ফাইলটি সংরক্ষণ করুন এবং Ctrl+X কমান্ড ব্যবহার করে এটি বন্ধ করুন।

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

intপ্রধান()
{
intn,fd;
গৃহস্থালিবুফ[পঞ্চাশ];
fd=খোলা(পরীক্ষাtxt,O_RDONLY);
n=পড়ুন(fd,বুফ, 10);
লিখুন( ,বুফ, 10);

প্রথমে নিচের gcc কমান্ড ব্যবহার করে একটি ওপেন সিস্টেম কলের জন্য সি কোড কম্পাইল করা যাক।

$gccনতুন সি

এখন সময় এসেছে ওপেন সিস্টেম কলের জন্য সি কোডের আউটপুট চেক করার। শেলটিতে নীচের a.out কমান্ডটি ব্যবহার করা যাক। আউটপুট একটি ফাইল test.txt এর বিষয়বস্তু থেকে 10 বাইট প্রদর্শন করে।

$/প্রতি.বাইরে

ওপেন সিস্টেম কল ব্যবহার করে একটি ফাইলের বিষয়বস্তু অন্য ফাইলে লিখতে আরেকটি উদাহরণ নেওয়া যাক। নীচের মতো ন্যানো কমান্ড ব্যবহার করে একটি নতুন সি ফাইল তৈরি করতে।

$ nano নতুন।

সুতরাং এটিতে একটি ছোট পরিবর্তন সহ একই কোড নিন। আমরা কোডে অন্য ফাইল বর্ণনাকারীকে fd1 হিসাবে সংজ্ঞায়িত করেছি। একটি অতিরিক্ত লাইন ব্যতীত সমস্ত কোড একই। কোডের দ্বিতীয় শেষ লাইনটি O_CREAT এবং মোড ব্যবহার করে টার্গেট নামে একটি নতুন ফাইল তৈরি করতে ওপেন সিস্টেম কল ব্যবহার করেছে, শুধুমাত্র O_WRONLY হিসাবে লিখুন। 0642 এই ফাইলে বরাদ্দ করা বিশেষাধিকারগুলি দেখায়। এবং ফাইলটি একটি নতুন ফাইল বর্ণনাকারীর কাছে ফেরত দেওয়া হয়েছে। পরবর্তী লাইন তার ফাইল বর্ণনাকারী অনুযায়ী বাফারে সামগ্রীর বাইট লেখার জন্য একটি আদেশ দেখিয়েছে। ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন।

সি ভাষা ফাইল ডিবাগ করতে gcc কম্পাইল কমান্ডটি চালান।

$ gcc নতুন।

সি কোডের আউটপুট প্রদর্শন করতে, নীচের মত শেলের a.out নির্দেশটি চেষ্টা করুন। কোনও আউটপুট নেই কারণ আউটপুটটি নতুন তৈরি ফাইল টার্গেটে পুননির্দেশিত হয়েছে।

$/প্রতি.বাইরে

ক্যাট কমান্ড ব্যবহার করে একটি ফাইল টার্গেটের ডেটা পরীক্ষা করা যাক। আউটপুট দেখায় যে ফাইলটিতে 20 বাইট রয়েছে।

$ cat টার্গেট

উপসংহার

উপরের টিউটোরিয়ালে, আমরা আপনাকে বুঝিয়েছি যে gcc কম্পাইলার ব্যবহার করে C ভাষায় একটি ওপেন সিস্টেম কল ব্যবহার করুন। এই গাইডে ব্যাখ্যা করা বিভিন্ন উদাহরণের সাহায্যে আপনি আপনার কাঙ্ক্ষিত প্রোগ্রাম বাস্তবায়নে নেতৃত্ব দেবেন।