Bahasa C
Sinyal adalah interupsi yang dikirimkan ke suatu proses oleh sistem operasi yang dapat menghentikan program sebelum waktunya. Anda dapat menghasilkan interupsi dengan menekan Ctrl+C pada sistem UNIX, LINUX, Mac OS X, atau Windows.
Ada sinyal yang tidak dapat ditangkap oleh program tetapi ada daftar sinyal berikut yang dapat Anda tangkap dalam program Anda dan dapat mengambil tindakan yang sesuai berdasarkan sinyal tersebut. Sinyal ini didefinisikan dalam file header C++
No.No | Sinyal &Deskripsi |
---|---|
1 | SIGABRT Penghentian program yang tidak normal, seperti panggilan untuk dibatalkan . |
2 | SIGFPE Operasi aritmatika yang salah, seperti pembagian dengan nol atau operasi yang menghasilkan overflow. |
3 | SIGILL Deteksi instruksi ilegal. |
4 | MASUKKAN Penerimaan sinyal perhatian interaktif. |
5 | SIGSEGV Akses penyimpanan yang tidak valid. |
6 | SIGTERM Permintaan penghentian dikirim ke program. |
Pustaka penanganan sinyal C++ menyediakan fungsi sinyal untuk menjebak kejadian tak terduga. Berikut adalah sintaks dari fungsi signal()
void (*signal (int sig, void (*func)(int)))(int);
Sederhananya, fungsi ini menerima dua argumen:argumen pertama sebagai bilangan bulat yang mewakili nomor sinyal dan argumen kedua sebagai penunjuk ke fungsi penanganan sinyal.
Mari kita menulis program C++ sederhana di mana kita akan menangkap sinyal SIGINT menggunakan fungsi signal(). Sinyal apa pun yang ingin Anda tangkap dalam program Anda, Anda harus mendaftarkan sinyal tersebut menggunakan sinyal fungsi dan mengasosiasikannya dengan penangan sinyal. Perhatikan contoh berikut
#include <iostream> #include <csignal> using namespace std; void signalHandler( int signum ) { cout << "Interrupt signal (" << signum << ") received.\n"; // cleanup and close up stuff here // terminate program exit(signum); } int main () { // register signal SIGINT and signal handler signal(SIGINT, signalHandler); while(1) { cout << "Going to sleep...." << endl; sleep(1); } return 0; }
Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut
Going to sleep.... Going to sleep.... Going to sleep....
Sekarang, tekan Ctrl+c untuk menghentikan program dan Anda akan melihat bahwa program Anda akan menangkap sinyal dan akan keluar dengan mencetak sesuatu sebagai berikut −
Going to sleep.... Going to sleep.... Going to sleep.... Interrupt signal (2) received.
Anda dapat menghasilkan sinyal dengan fungsi raise() , yang mengambil nomor sinyal integer sebagai argumen dan memiliki sintaks berikut.
int raise (signal sig);
Di sini, sig adalah nomor sinyal untuk mengirim salah satu sinyal:SIGINT, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGTERM, SIGHUP. Berikut adalah contoh di mana kita menaikkan sinyal secara internal menggunakan fungsi raise() sebagai berikut −
#include <iostream> #include <csignal> using namespace std; void signalHandler( int signum ) { cout << "Interrupt signal (" << signum << ") received.\n"; // cleanup and close up stuff here // terminate program exit(signum); } int main () { int i = 0; // register signal SIGINT and signal handler signal(SIGINT, signalHandler); while(++i) { cout << "Going to sleep...." << endl; if( i == 3 ) { raise( SIGINT); } sleep(1); } return 0; }
Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil berikut dan akan keluar secara otomatis −
Going to sleep.... Going to sleep.... Going to sleep.... Interrupt signal (2) received.
Bahasa C
Operator C++ Kelebihan Beban Dalam tutorial ini, kita akan belajar tentang overloading operator dengan bantuan contoh. Dalam C++, kita dapat mengubah cara kerja operator untuk tipe yang ditentukan pengguna seperti objek dan struktur. Ini dikenal sebagai kelebihan operator . Misalnya, Misalkan kita
Warisan C++ Dalam tutorial ini, kita akan belajar tentang pewarisan dalam C++ dengan bantuan contoh. Pewarisan adalah salah satu fitur utama pemrograman berorientasi objek di C++. Ini memungkinkan kita untuk membuat kelas baru (kelas turunan) dari kelas yang ada (kelas dasar). Kelas turunan mewari
Apa yang dimaksud dengan penanganan file di C++? File menyimpan data secara permanen di perangkat penyimpanan. Dengan penanganan file, output dari suatu program dapat disimpan dalam sebuah file. Berbagai operasi dapat dilakukan pada data saat berada dalam file. Aliran adalah abstraksi perangkat te
Pengecualian adalah masalah yang muncul selama eksekusi program. Pengecualian C++ adalah respons terhadap keadaan luar biasa yang muncul saat program sedang berjalan, seperti upaya untuk membagi dengan nol. Pengecualian menyediakan cara untuk mentransfer kontrol dari satu bagian program ke bagian l