কম্পিউটার টিউটোরিয়াল

সি প্রোগ্রাম: Ctrl+C দবাতে প্রোগ্রাম টার্মিনেট না হওয়ার কোড


এই সেকশনে আমরা দেখব কিভাবে সি-তে এমন একটি প্রোগ্রাম লিখা যায় যা 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
  1. সি প্রোগ্রাম কীভাবে এক্সিকিউট হয় (Compilation Process)

  2. সি প্রোগ্রাম: PGM ফরম্যাটে ইমেজ লিখা (Write Image in PGM Format)

  3. Windows 11-এ সমস্ত 'Not Responding' প্রোগ্রাম প্রসেস বন্ধ করার পদ্ধতি

  4. এরর 1083: সার্ভিসের এক্সিকিউটেবল প্রোগ্রাম সার্ভিস ইমপ্লিমেন্ট করে না - সমাধান