C++-এ Ctrl+C দিয়ে প্রোগ্রাম বন্ধ করতে SIGINT সিগন্যাল পাঠানো হয়। <signal.h> (বা <csignal>) হেডারের signal() ফাংশন দিয়ে কাস্টম হ্যান্ডলার সেট করা যায়।
উদাহরণ কোড
#include <unistd.h>
#include <iostream>
#include <cstdlib>
#include <csignal>
using namespace std;
void signal_callback_handler(int signum) {
cout << "Caught signal " << signum << endl; // signum = 2 (SIGINT)
exit(signum); // প্রোগ্রাম টার্মিনেট
}
int main() {
signal(SIGINT, signal_callback_handler); // হ্যান্ডলার রেজিস্টার
while (true) {
cout << "Program processing..." << endl;
sleep(1);
}
return EXIT_SUCCESS;
}
আউটপুট (Ctrl+C চাপলে)
Program processing... Program processing... Program processing... ^Caught signal 2
সতর্কতা:
- সিগন্যাল হ্যান্ডলার Async-signal-safe ফাংশনই কল করা উচিত (যেমন
write,_Exit)।coutবাexitনন-এসিঙ্ক-সেফ, কিন্তু সাধারণ প্রোগ্রামে কাজ করে। - মাল্টিথ্রেডেড প্রোগ্রামে
pthread_sigmaskবাsigaction(SA_RESTART) ব্যবহার করা ভালো। - C++26-এ
std::signalডিপ্রিকেটেড,std::signal_handlerআসছে।