এই সেকশনে আমরা দেখব কিভাবে সি-তে এমন একটি প্রোগ্রাম লিখা যায় যা Ctrl + C কী দবালেও টার্মিনেট হবে না।
Ctrl + C কীবোর্ড ইন্টারাপ্ট (keyboard interrupt) জেনারেট করে, এবং এটি বর্তমান প্রসেসের এক্সিকিউশন বন্ধ করে দেয়। এখানে যখন আমরা Ctrl + C চাপব, তবে এটি একটি মেসেজ প্রিন্ট করবে এবং এক্সিকিউশন চালিয়ে যাবে। এই ফাংশনালিটি ব্যবহার করতে আমরা সিগন্যাল হ্যান্ডলিং (signal handling) টেকনিক ব্যবহার করব সি-তে। যখন Ctrl + C চাপা হয়, তবে এটি SIGINT সিগন্যাল জেনারেট করে। কিছু অন্যান্য সিগন্যাল এবং তাদের ফাংশনালিটি নিচের তালিকায় দেওয়া হলো।
| Signal | বিবরণ |
|---|---|
| SIGABRT | অসামান্য টার্মিনেশন নির্দেশ করে |
| SIGFPE | ফ্লোটিং পয়েন্ট এক্সসেপশন নির্দেশ করে |
| SIGILL | অবৈধ ইনস্ট্রাকশন নির্দেশ করে |
| SIGINT | ইন্টারঅ্যাক্টিভ অ্যাটেনশন রিকোয়েস্ট প্রোগ্রামে পাঠানো হয়েছে নির্দেশ করে |
| SIGSEGV | অবৈধ মেমরি অ্যাক্সেস নির্দেশ করে |
| SIGTERM | টার্মিনেশন রিকোয়েস্ট প্রোগ্রামে পাঠানো হয়েছে নির্দেশ করে |
এখানে আমরা স্ট্যান্ডার্ড সি লাইব্রেরি ফাংশন signal() ব্যবহার করব এই সিগন্যালগুলো হ্যান্ডেল করতে।
উদাহরণ কোড
#include <stdio.h>
#include <signal.h>
void sigint_handler(int signum) { // SIGINT-এর জন্য হ্যান্ডলার
// হ্যান্ডলার রিসেট করুন যাতে পরবর্তী SIGINTও ক্যাচ করা যায়
signal(SIGINT, sigint_handler);
printf("Cannot be stopped using Ctrl+C \n");
fflush(stdout);
}
main() {
signal(SIGINT, sigint_handler);
while(1) { // ইনফিনিট লুপ তৈরি
}
}
আউটপুট
Cannot be stopped using Ctrl+C Cannot be stopped using Ctrl+C