C 언어
신호는 프로그램을 조기에 종료할 수 있는 운영 체제가 프로세스에 전달하는 인터럽트입니다. UNIX, LINUX, Mac OS X 또는 Windows 시스템에서 Ctrl+C를 눌러 인터럽트를 생성할 수 있습니다.
프로그램에서 포착할 수 없는 신호가 있지만 프로그램에서 포착할 수 있고 신호에 따라 적절한 조치를 취할 수 있는 신호의 다음 목록이 있습니다. 이러한 신호는 C++ 헤더 파일
Sr.No | 신호 및 설명 |
---|---|
1 | 시가브트 중단 호출과 같은 프로그램의 비정상 종료 . |
2 | SIGFPE 0으로 나누기 또는 오버플로가 발생하는 연산과 같은 잘못된 산술 연산입니다. |
3 | 시질 불법 명령 감지. |
4 | 시그인트 양방향 주의 신호 수신 |
5 | SIGSEGV 저장소에 대한 잘못된 액세스입니다. |
6 | 시그텀 프로그램에 종료 요청이 전송되었습니다. |
C++ 신호 처리 라이브러리는 신호 기능을 제공합니다. 예상치 못한 사건을 포착하기 위해. 다음은 signal() 함수의 구문입니다. -
void (*signal (int sig, void (*func)(int)))(int);
간단하게 하면 이 함수는 두 개의 인수를 받습니다. 첫 번째 인수는 신호 번호를 나타내는 정수이고 두 번째 인수는 신호 처리 함수에 대한 포인터입니다.
signal() 함수를 사용하여 SIGINT 신호를 잡을 간단한 C++ 프로그램을 작성해 보겠습니다. 프로그램에서 포착하려는 신호가 무엇이든 signal을 사용하여 해당 신호를 등록해야 합니다. 함수를 만들고 신호 처리기와 연결합니다. 다음 예를 살펴보십시오 -
#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; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Going to sleep.... Going to sleep.... Going to sleep....
이제 Ctrl+c를 눌러 프로그램을 중단하면 프로그램이 신호를 포착하고 다음과 같이 출력하는 것을 볼 수 있습니다. -
Going to sleep.... Going to sleep.... Going to sleep.... Interrupt signal (2) received.
raise() 함수로 신호를 생성할 수 있습니다. , 정수 신호 번호를 인수로 사용하고 다음 구문을 사용합니다.
int raise (signal sig);
자, 시호 SIGINT, SIGABRT, SIGFPE, SIGILL, SIGSEGV, SIGTERM, SIGHUP 신호 중 하나를 보내는 신호 번호입니다. 다음은 다음과 같이 raise() 함수를 사용하여 내부적으로 신호를 발생시키는 예입니다. -
#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; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성되고 자동으로 출력됩니다 -
Going to sleep.... Going to sleep.... Going to sleep.... Interrupt signal (2) received.
C 언어
C++에서 파일 처리란 무엇입니까? 파일은 데이터를 저장 장치에 영구적으로 저장합니다. 파일 처리를 사용하면 프로그램의 출력을 파일에 저장할 수 있습니다. 파일에 있는 동안 데이터에 대해 다양한 작업을 수행할 수 있습니다. 스트림은 입력/출력 작업이 수행되는 장치의 추상화입니다. 스트림을 대상 또는 무기한 길이의 문자 소스로 나타낼 수 있습니다. 이것은 그들의 용도에 따라 결정될 것입니다. C++는 파일 처리를 위한 메서드와 함께 제공되는 라이브러리를 제공합니다. 논의해 봅시다. 이 C++ 자습서에서는 다음을 배우게 됩니다.
예외는 프로그램 실행 중에 발생하는 문제입니다. C++ 예외는 0으로 나누려는 시도와 같이 프로그램이 실행되는 동안 발생하는 예외적인 상황에 대한 응답입니다. 예외는 프로그램의 한 부분에서 다른 부분으로 제어를 전송하는 방법을 제공합니다. C++ 예외 처리는 try, catch,의 세 가지 키워드를 기반으로 합니다. 그리고 던지기 . 던지다 − 문제가 나타나면 프로그램에서 예외가 발생합니다. 이것은 throw를 사용하여 수행됩니다. 키워드. 잡다 − 프로그램은 문제를 처리하려는 프로그램의 위치에서 예외 처리기로 예외를