সিস্টেম কল প্রোগ্রাম এবং লিনাক্স অপারেটিং সিস্টেম কার্নেলের মধ্যে প্রাথমিক গেটওয়ে হিসাবে কাজ করে। যদিও আপনার সি প্রোগ্রামিং ক্যারিয়ার জুড়ে আপনার অবশ্যই একটি সিস্টেম কল করার প্রয়োজন হবে, আপনি ব্যতিক্রমী উত্পাদনশীলতা বা একটি নির্দিষ্ট শৈলীর বৈশিষ্ট্যের জন্য লক্ষ্য রাখেন, গ্লিবক রিপোজিটরি বা জনপ্রিয় লিনাক্স ডিস্ট্রোতে পাওয়া অন্যান্য স্ট্যান্ডার্ড লাইব্রেরিগুলি আপনার বিশাল সংখ্যাগরিষ্ঠের জন্য যথেষ্ট হবে প্রয়োজনীয়তা এই নির্দেশিকায়, আমরা সি ভাষায় লিখুন সিস্টেম কল সম্পর্কে একটি ধারণা প্রতিষ্ঠা করব।
বাক্য গঠন:
#অন্তর্ভুক্তssize_tলিখুন(int fd, const void*buf, size_t গণনা);
এই উপরের সিনট্যাক্সে, প্রথম লাইনটি সিস্টেম কলগুলির জন্য লাইব্রেরি দেখায়। দ্বিতীয় লাইনে, fd মানে একটি ফাইল বর্ণনাকারী যা প্রকৃতপক্ষে একটি সংখ্যা যা একটি প্রক্রিয়ার খোলা ফাইল নির্দিষ্ট করে। কীওয়ার্ড *বুফ মানে বাফার। এটিতে যে কোনও ডেটা রয়েছে। পরবর্তী গণনা। এটি বাফার থেকে একটি ফাইল বর্ণনাকারীর কাছে লিখিত বাইটের সংখ্যা।
পূর্বশর্তগুলি ইনস্টল করুন:
যে কোন সি ল্যাঙ্গুয়েজ কোড চালানোর জন্য আপনাকে প্রথমে লিনাক্স ডিস্ট্রিবিউশনে কিছু প্যাকেজ ইনস্টল করতে হবে। আপনি যদি রাইট সিস্টেম কল সম্পর্কিত আরও তথ্য দেখতে চান, তাহলে আপনাকে এটি করতে manpages-dev প্যাকেজ ইনস্টল করতে হবে। Ctrl+Alt+T শর্টকাট কী ব্যবহার করে টার্মিনাল খুলতে। এটি খোলার পরে, manpages-dev কীওয়ার্ড অনুসরণ করে manpages ইনস্টল করার জন্য নিচের apt install কমান্ডটি লিখুন।
$sudoউপযুক্তইনস্টলmanpages-dev
ম্যানপেইজ ইনস্টল করতে কিছু সময় লাগবে। এটি সম্পন্ন হওয়ার জন্য অপেক্ষা করুন।
ইনস্টলেশনের পরে, আপনি শেলটিতে নিচের ম্যান কমান্ডের মাধ্যমে রাইট সিস্টেম কল সম্পর্কে অতিরিক্ত তথ্য দেখতে পারেন।
$মানুষ 2 লিখুন
লেখার কমান্ডের জন্য আউটপুট ম্যান পৃষ্ঠাটি নীচে দেওয়া হয়েছে। আপনি এটি সম্পর্কে তথ্য পড়তে পারেন। ম্যানুয়াল ছাড়তে q টিপুন।
সি ভাষাতে কাজ করার জন্য এখন আপনার লিনাক্স সিস্টেমে Gcc প্যাকেজ ইনস্টল করার সময় এসেছে। এর জন্য, শেলটি খুলুন এবং নীচের apt install কমান্ডটি লিখুন এবং তারপরে gcc কীওয়ার্ডটি অনুসরণ করুন।
$sudoউপযুক্তইনস্টল gcc
এদিকে, ইনস্টলেশনের সময়, এটি আপনাকে ইন্সটলেশনের এই ক্রিয়াটি নিশ্চিত করতে বলতে পারে y টি চালিয়ে যেতে এবং n বন্ধ করতে। সুতরাং, y কী ট্যাপ করুন এবং এন্টার কী টিপুন।
এটি কিছু মিনিটের মধ্যে আপনার সিস্টেমে ইনস্টল করা হবে এবং আউটপুটটির শেষ লাইনগুলি নীচের স্ন্যাপশটে দেখানো হবে।
উদাহরণ:
আমাদের লিনাক্স ডিস্ট্রিবিউশনে একটি রাইটিং সিস্টেম কলের কিছু উদাহরণ দেওয়া যাক। অতএব, কমান্ড-লাইন শেলটি খুলুন এবং ডট সি এক্সটেনশন সহ একটি নতুন সি ফাইল তৈরি করুন। এটি দ্রুত তৈরি এবং খোলার জন্য আপনাকে নীচের ন্যানো কমান্ডটি ব্যবহার করতে হবে। আমরা এটিকে নতুন নামে একটি নাম দিয়েছি।
$ন্যানোনতুন সি
নিচের উইন্ডোটি খোলা হবে। এখন আপনাকে এই ফাইলে অ্যাফিক্সড কোড লিখতে হবে। এই কোডে, আমরা প্রথমে একটি unistd.h লাইব্রেরি অন্তর্ভুক্ত করেছি। তারপর আমরা প্রধান ফাংশন তৈরি করেছি, এবং এই ফাংশনের মধ্যে, আমরা একটি রাইট সিস্টেম কল তৈরি করেছি। এই সিস্টেম কলে, প্রথম প্যারামিটার হল ফাইল বর্ণনাকারী। এই ক্ষেত্রে, পূর্ণসংখ্যা 1 আউটপুট ডিভাইসের স্ক্রিনের প্রতিনিধিত্ব করে এবং এটি স্থির হয়। সুতরাং আমাদের আউটপুট স্ক্রিনে দেখানো হবে। দ্বিতীয় প্যারামিটার বাফার ডেটা দেখায়। আপনি এতে কিছু যোগ করতে পারেন। এবং শেষ প্যারামিটার বাফার প্যারামিটারে প্রদত্ত ডেটার গণনা সংখ্যা দেখায়। আমরা গণনা সংখ্যা হিসাবে 5 উল্লেখ করেছি, এটি শুধুমাত্র বাফার ডেটার প্রথম 5 বাইট দেখাবে এবং বাইট বাম উপেক্ষা করবে। Ctrl+S শর্টকাট কী ব্যবহার করে এই কোডটি সেভ করুন এবং Ctrl+X কমান্ড ব্যবহার করে এই ফাইল থেকে প্রস্থান করুন।
#অন্তর্ভুক্তইন্ট মেইন()
{লিখুন(ঘআকসা ইয়াসিন5);}
এখন টার্মিনালে, এই নতুন তৈরি কোডটি একটি ফাইলের নাম দিয়ে কম্পাইল করার জন্য নিচের gcc কমান্ডটি চেষ্টা করুন।
$gccনতুন সি
চলার সময় তৈরি করা ডিফল্ট a.out ফাইল ব্যবহার করে এই কোডটি পরীক্ষা করা যাক। সুতরাং, রাইট সিস্টেম কলের আউটপুট চেক করতে নিচের a.out কমান্ডটি চেষ্টা করুন। আমাদের বর্তমান ডিরেক্টরি থেকে ফাইলটি বাছাই করতে ./ এর সাথে এটি ব্যবহার করতে হবে।
$।/a. আউটআপনি যে আউটপুটটি দেখতে পাচ্ছেন তা কেবল সংখ্যা 5 এর কারণে আকসা শব্দটি প্রদর্শন করেছে।
আসুন আমাদের কোডটি একটু পরিবর্তন করি। আমরা গণনা সংখ্যা 11 তে পরিবর্তন করেছি কারণ আমাদের বাফার ডেটা আকসা ইয়াসিনে মোট 11 বাইট রয়েছে। সুতরাং এবার, আউটপুট স্ট্রিং ডেটা আকসা ইয়াসিনের পুরো বাইট দেখাবে। Ctrl+S ব্যবহার করে এই ফাইলটি সংরক্ষণ করুন এবং Ctrl+X শর্টকাট কী ব্যবহার করে ছেড়ে দিন।
আসুন লিনাক্স বিতরণের জন্য নতুন ইনস্টল করা gcc কম্পাইলার ব্যবহার করে আপডেট করা কোডটি কম্পাইল করি। একই ফাইলের নামের সাথে একই gcc কমান্ড দিয়ে চেষ্টা করুন new.c.
$gccনতুন সি
এখন নীচের হিসাবে আগের a.out কমান্ড ব্যবহার করে একই কোডের আউটপুট প্রদর্শন করুন। আউটপুট বাফারের পূর্ণ স্ট্রিং আকসা ইয়াসিন দেখায়।
$।/a. আউট
আসুন দেখি কোডটি কিভাবে কাজ করে যখন আমরা বাফার ডেটাতে থাকা মোট বাইটের সংখ্যা থেকে বেশি গণনা সংখ্যা গ্রহণ করি। সুতরাং, আমরা গণনাটি 30 হিসাবে ব্যবহার করছি। ফাইলটি সংরক্ষণ করুন এবং বন্ধ করুন।
নিচের মত gcc কমান্ড ব্যবহার করে একই আপডেট করা ফাইল কম্পাইল করুন।
$gccনতুন সি
এখন a.out কমান্ড ব্যবহার করে ফাইলটি এক্সিকিউট করুন, এবং আউটপুটটি বাফার ডেটা এবং তার সাথে কিছু আবর্জনা মান দেখাবে যেমনটি নীচের স্ন্যাপশট আউটপুটে প্রদর্শিত হবে। $ ./a.out
আপনি একই ফাইলে নীচের কোডটি ব্যবহার করে ফাইলে লিখিত মোট বাইটের সংখ্যাও পরীক্ষা করতে পারেন।
জিসিসি নির্দেশ দ্বারা কোড কম্পাইল করুন।
$gccনতুন সি
আউটপুট a.out কমান্ড ব্যবহার করে বাফার ডেটা এবং লাইন ব্রেক সহ মোট বাইটের সংখ্যা দেখায়।
$।/a. আউট
উপসংহার:
এই টিউটোরিয়ালে, আমরা সি -তে রাইট সিস্টেম কল ব্যবহার করার ধারণাটি বিস্তারিতভাবে বর্ণনা করেছি, এই নিবন্ধটি ব্যবহার করে রাইটিং সিস্টেম কলের ধারণাটি বোঝার জন্য সমস্ত উদাহরণ চেষ্টা করুন।