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

সি প্রোগ্রামিং-এ Ctrl+Z চাপলেও প্রোগ্রাম সাসপেন্ড না হওয়ার কোড


প্রোগ্রামিং-এ যখন কোনো প্রোগ্রাম টার্মিনাল কম্পাইলারে অস্বাভাবিকভাবে চলে, প্রোগ্রামারকে সেটি স্পষ্টভাবে বন্ধ করার ক্ষমতা থাকে। এর জন্য সঠিক কীবোর্ড শর্টকাট জানতে হয়।

কোড এক্সিকিউশন বন্ধ করার দুটি কীবোর্ড শর্টকাট রয়েছে:

  • Ctrl+C − এটি প্রোগ্রাম এক্সিকিউশন বন্ধ করতে ব্যবহৃত হয়। এটি I/O অপারেশন কমপ্লিট হওয়া পর্যন্ত অপেক্ষা করে এবং তারপর এক্সিকিউশন সাসপেন্ড করে। এটি প্রসেসকে SIGINT সিগন্যাল পাঠায় যার ফলে প্রসেস টার্মিনেট হয়। কিছু ভাষায় (যেমন সি-তে signal ফাংশন) এই SIGINT হ্যান্ডেল করা যায়।

  • Ctrl+Z − এটি প্রোগ্রাম এক্সিকিউশন বন্ধ করে, প্রসেসের সাথে জড়িত সব টাস্ক বন্ধ করে এবং এক্সিকিউশন সাসপেন্ড করে। এটি SIGTSTP সিগন্যাল পাঠায়। এটি SIGINT-এর চেয়ে শক্তিশালী এবং এটিও হ্যান্ডেল করা যায়।

এখানে আমরা এমন একটি কোড লিখব যা Ctrl+Z কলকে উপেক্ষা করবে। সাসপেন্ড হওয়ার পরিবর্তে প্রোগ্রামটি প্রিন্ট করবে: "ctrl+z cannot suspend this code"।

সি-তে signal() মেথড ব্যবহার করে এই সিগন্যাল হ্যান্ডেল করা যায়। SIGTSTP সিগন্যাল ইনভোক হলে প্রসেস বন্ধ করার বদলে আমরা সিগন্যাল হ্যান্ডলার রিডিফাইন করব যাতে কোড টার্মিনেট না হয় এবং একটি মেসেজ প্রিন্ট করে।

সি প্রোগ্রাম

#include <stdio.h>
#include <signal.h>

void signalhandler(int sig_num) {
    signal(SIGTSTP, signalhandler);
    printf("Cannot execute Ctrl+Z\n");
}

int main() {
    int a = 1;
    signal(SIGTSTP, signalhandler);
    while (a) {
    }
    return 0;
}

আউটপুট

// an infinite loop

  1. সি প্রোগ্রাম কীভাবে এক্সিকিউট হয় (Compilation Process)

  2. স্নিপিং টুল থেকে ইমেইল পাঠাতে সমস্যা: 'ইমেইল প্রোগ্রাম ইনস্টল করুন' এরর সমাধান

  3. উইন্ডোজ ১১/১০-এ ফুল-স্ক্রিন মোডে টাস্কবার হাইড না হওয়ার সমস্যা সমাধান

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