C++의 exit(1)
이 기사에서는 C++에서exit()
함수를 사용하는 방법을 설명합니다.
exit
기능을 사용하여 상태 코드로 C++ 프로그램 종료
실행중인 프로그램은 일반적으로 운영 체제에서 프로세스라고하며 다른 상태로 표시되는 수명주기가 있습니다. 웹 서버와 같은 장기 실행 프로그램이 있지만 일부 상황에서 또는 사용자의 신호를 전달하여 종료해야합니다. 프로세스 종료는 C 표준의 일부이며 C++에 포함 된exit()
함수로 호출 할 수 있습니다. 자식이 대기하는 경우 부모 프로세스에서 읽을 수있는 프로그램 종료 상태를 지정하는 하나의 정수 인수를 사용합니다.
성공적인 반환 상태 코드의 일반적인 값은0
이며 0이 아닌 것은 오류 코드로 간주되며 미리 정의 된 시나리오에 해당 할 수 있습니다. exit
호출에 전달 된 해당 종료 코드를 표시하는EXIT_SUCCESS
및EXIT_FAILURE
라는 두 개의 매크로 표현식이 있습니다. 일반적으로 프로그램에는 여러 파일 스트림과 열려있는 임시 파일이 있으며,exit
가 호출 될 때 자동으로 닫히거나 제거됩니다.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
printf("Executing the program...\n");
sleep(3);
exit(0);
// exit(EXIT_SUCCESS);
}
출력:
Executing the program...
exit(1)
을 사용하여 실패 상태 코드로 C++ 프로그램 종료
인수 값이 ‘1’인 ’exit’함수는 실패로 종료를 표시하는 데 사용됩니다. 성공적인 호출 상태 코드의 값을 반환하는 일부 함수는 반환 값을 확인하고 오류가 발생하면 프로그램을 종료하는 조건문과 결합 될 수 있습니다. exit(1)
은exit(EXIT_FAILURE)
를 호출하는 것과 같습니다.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
int main() {
if (getchar() == EOF) {
perror("getline");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(1);
// exit(EXIT_SUCCESS);
}
출력:
Executing the program...
exit()
함수의 또 다른 유용한 기능은 프로그램이 최종적으로 종료되기 전에 특별히 등록 된 함수를 실행하는 것입니다. 이러한 함수는 일반 함수로 정의 할 수 있으며 종료시 호출하려면atexit
함수로 등록해야합니다. atexit
는 표준 라이브러리의 일부이며 함수 포인터를 유일한 인수로 사용합니다. 여러 개의atexit
호출을 사용하여 여러 함수를 등록 할 수 있으며,exit
가 실행되면 각 함수가 역순으로 호출됩니다.
#include <unistd.h>
#include <iostream>
using std::cout;
using std::endl;
static void at_exit_func() { cout << "at_exit_func called" << endl; }
static void at_exit_func2() { cout << "at_exit_func called" << endl; }
int main() {
if (atexit(at_exit_func) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
if (atexit(at_exit_func2) != 0) {
perror("atexit");
exit(EXIT_FAILURE);
}
cout << "Executing the program..." << endl;
sleep(3);
exit(EXIT_SUCCESS);
}
출력:
Executing the program...
at_exit_func2 called
at_exit_func called
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook