Latest web development tutorials
×

C++ หลักสูตร

C++ หลักสูตร C++ แนะนำโดยย่อ C++ การตั้งค่าสภาพแวดล้อม C++ ไวยากรณ์พื้นฐาน C++ หมายเหตุ C++ ชนิดข้อมูล C++ ประเภทตัวแปร C++ ขอบเขตตัวแปร C++ คงที่ C++ ประเภทการปรับเปลี่ยน C++ ประเภทการจัดเก็บ C++ ผู้ประกอบการ C++ การไหลเวียน C++ ผู้พิพากษา C++ ฟังก์ชัน C++ ดิจิตอล C++ แถว C++ เชือก C++ ชี้ C++ อ้างอิง C++ วันที่และเวลา C++ เอาท์พุทหรือ Basic Input C++ โครงสร้างข้อมูล

C++ เชิงวัตถุ

C++ คลาสและวัตถุ C++ สืบทอด C++ ผู้ประกอบการมากเกินไปและการทำงานมากเกินไป C++ polymorphism C++ ข้อมูลที่เป็นนามธรรม C++ ข้อมูล encapsulation C++ อินเตอร์เฟซ(ระดับนามธรรม)

C++ การสอนที่ทันสมัย

C++ แฟ้มและสตรีม C++ การจัดการข้อยกเว้น C++ หน่วยความจำแบบไดนามิก C++ namespaces C++ แบบ C++ preprocessor C++ การประมวลผลสัญญาณ C++ multithreading C++ Web โครงการ

C++ กรุ

C++ STL หลักสูตร C++ ห้องสมุดมาตรฐาน C++ ทรัพยากรที่มีประโยชน์

การประมวลผลสัญญาณ C ++

สัญญาณจะถูกส่งโดยระบบปฏิบัติการกระบวนการที่ถูกขัดจังหวะจะเลิกจ้างเริ่มต้นของโปรแกรม บน Unix, Linux, Mac OS X หรือระบบ Windows คุณสามารถกด CTRL + C ขัดจังหวะ

สัญญาณบางอย่างไม่สามารถจับขั้นตอน แต่ระบุไว้ในตารางด้านล่างสัญญาณที่สามารถบันทึกในโปรแกรมและสามารถดำเนินการที่เหมาะสมขึ้นอยู่กับสัญญาณ สัญญาณเหล่านี้จะกำหนดไว้ในไฟล์ส่วนหัว C ++ <csignal> ใน

信号 描述
SIGABRT 程序的异常终止,如调用abort
SIGFPE 错误的算术运算,比如除以零或导致溢出的操作。
SIGILL 检测非法指令。
SIGINT 接收到交互注意信号。
SIGSEGV 非法访问内存。
SIGTERM 发送到程序的终止请求。

สัญญาณ () ฟังก์ชัน

ไลบรารี c ++ให้ฟังก์ชั่นการประมวลผลสัญญาณสัญญาณในการจับภาพเหตุฉุกเฉินต่อไปนี้เป็นฟังก์ชั่นสัญญาณไวยากรณ์ ():

void (*signal (int sig, void (*func)(int)))(int); 

ฟังก์ชั่นนี้ยอมรับสองพารามิเตอร์: พารามิเตอร์แรกเป็นจำนวนเต็มแทนจำนวนของสัญญาณนั้นพารามิเตอร์ที่สองคือตัวชี้ไปยังฟังก์ชั่นการประมวลผลสัญญาณ

ลองเขียนโปรแกรมง่ายๆ c ++ ที่ใช้สัญญาณ () ฟังก์ชั่นในการจับสัญญาณ SIGINTไม่ว่าสิ่งที่คุณต้องการที่จะจับสัญญาณในโปรแกรมของคุณคุณต้องใช้ฟังก์ชั่นของสัญญาณในการลงทะเบียนของสัญญาณและการประมวลผลสัญญาณที่เกี่ยวข้องกับโปรแกรมพิจารณาตัวอย่างต่อไปนี้:

#include <iostream>
#include <csignal>

using namespace std;

void signalHandler( int signum )
{
    cout << "Interrupt signal (" << signum << ") received.\n";

    // 清理并关闭
    // 终止程序  

   exit(signum);  

}

int main ()
{
    // 注册信号 SIGINT 和信号处理程序
    signal(SIGINT, signalHandler);  

    while(1){
       cout << "Going to sleep...." << endl;
       sleep(1);
    }

    return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:

Going to sleep....
Going to sleep....
Going to sleep....

ตอนนี้ให้กด Ctrl + C เพื่อหยุดโปรแกรมที่คุณจะเห็นการจับสัญญาณของโปรแกรมและออกจากโปรแกรมการพิมพ์ต่อไปนี้:

Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received.

เพิ่มฟังก์ชัน ()

คุณสามารถใช้การเพิ่มฟังก์ชั่น () สร้างสัญญาณฟังก์ชั่นสัญญาณจะใช้เวลาเป็นจำนวนเต็มเป็นพารามิเตอร์ไวยากรณ์ต่อไปนี้:

int raise (signal sig);

นี่ sig เป็นสัญญาณที่จะส่งหมายเลขสัญญาณเหล่านี้รวมถึง: SIGINT, SIGABRT, SIGFPE, SIGILL , SIGSEGV, SIGTERM, SIGHUPนี่คือสิ่งที่เราจะใช้เพิ่ม () ฟังก์ชันสร้างสัญญาณภายในเช่น A:

#include <iostream>
#include <csignal>

using namespace std;

void signalHandler( int signum )
{
    cout << "Interrupt signal (" << signum << ") received.\n";

    // 清理并关闭
    // 终止程序 

   exit(signum);  

}

int main ()
{
    int i = 0;
    // 注册信号 SIGINT 和信号处理程序
    signal(SIGINT, signalHandler);  

    while(++i){
       cout << "Going to sleep...." << endl;
       if( i == 3 ){
          raise( SIGINT);
       }
       sleep(1);
    }

    return 0;
}

เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปโดยอัตโนมัติและจะออกจาก:

Going to sleep....
Going to sleep....
Going to sleep....
Interrupt signal (2) received.