C++의 exit(1)

Jinku Hu 2023년10월12일
  1. exit기능을 사용하여 상태 코드로 C++ 프로그램 종료
  2. exit(1)을 사용하여 실패 상태 코드로 C++ 프로그램 종료
C++의 exit(1)

이 기사에서는 C++에서exit()함수를 사용하는 방법을 설명합니다.

exit기능을 사용하여 상태 코드로 C++ 프로그램 종료

실행중인 프로그램은 일반적으로 운영 체제에서 프로세스라고하며 다른 상태로 표시되는 수명주기가 있습니다. 웹 서버와 같은 장기 실행 프로그램이 있지만 일부 상황에서 또는 사용자의 신호를 전달하여 종료해야합니다. 프로세스 종료는 C 표준의 일부이며 C++에 포함 된exit()함수로 호출 할 수 있습니다. 자식이 대기하는 경우 부모 프로세스에서 읽을 수있는 프로그램 종료 상태를 지정하는 하나의 정수 인수를 사용합니다.

성공적인 반환 상태 코드의 일반적인 값은0이며 0이 아닌 것은 오류 코드로 간주되며 미리 정의 된 시나리오에 해당 할 수 있습니다. exit호출에 전달 된 해당 종료 코드를 표시하는EXIT_SUCCESSEXIT_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
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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