맨위로가기

C 프로세스 제어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

C 프로세스 제어는 C 프로그래밍 언어에서 프로그램의 실행을 제어하는 데 사용되는 함수들을 의미한다. `stdlib.h` (C++) 또는 `cstdlib` 헤더 파일에 정의되어 있으며, 프로그램 종료, 종료 시 호출될 함수 등록, 환경 변수 접근, 호스트 환경 명령 프로세서 호출 등의 기능을 제공한다. 주요 함수로는 abort, exit, _Exit, atexit, quick_exit, at_quick_exit, getenv, system 등이 있다.

광고

더 읽어볼만한 페이지

  • C 표준 라이브러리 - 파일 끝
    파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다.
  • C 표준 라이브러리 - C 자료형
    C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.

2. 프로그램 종료 함수

프로세스 제어 함수들은 `stdlib.h` 헤더(C++에서는 `cstdlib` 헤더)에 정의되어 있다.

프로그램 종료 함수[1]
함수설명
abort비정상적인 프로그램 종료 (정리 과정 없음)
exit정상적인 프로그램 종료 (정리 과정 수행)
_Exit정상적인 프로그램 종료 (정리 과정 없음) (C99)
atexit`exit()` 호출 시 호출될 함수 등록
quick_exit정상적인 프로그램 종료 (IO 버퍼 플러시, 최소한의 정리) (C11)
at_quick_exit`quick_exit()` 호출 시 호출될 함수 등록


2. 1. abort

https://en.cppreference.com/w/c/program/abort abort 함수는 정리 작업 없이 비정상적인 프로그램 종료를 수행한다. 이 함수는 C 표준 라이브러리의 `stdlib.h` (C++ 에서는 `cstdlib`) 헤더 파일에 정의되어 있다.[1]

2. 2. exit

`exit` 함수는 정상적인 프로그램 종료를 수행한다. C 표준 함수이며, `stdlib.h` (C++ 에서는 `cstdlib`) 헤더 파일에 정의되어 있다.[1]

`exit` 함수는 호출 시 다음 작업을 수행한다.

  • `atexit` 함수를 통해 등록된 모든 종료 처리 함수들을 호출한다.
  • 열린 모든 C 스트림을 닫고, 버퍼의 내용을 출력(flush)한다.
  • 운영 체제에 제어를 반환하고, 종료 상태 코드를 전달한다.


```cpp

#include

void exit(int status);

```

  • `status`: 운영체제에 반환할 종료 상태 코드. 일반적으로 0은 성공, 0이 아닌 값은 오류를 나타낸다.


`exit` 함수는 `abort` 함수와는 다르게, 비정상적인 종료가 아닌 정상적인 프로그램 종료를 처리한다.[1] `_Exit` 함수는 정리 작업을 수행하지 않고 종료하며, `quick_exit`함수는 최소한의 정리 작업만 수행하고 종료한다.

`exit` 함수 관련 함수
함수설명
abort비정상적인 프로그램 종료 (정리 과정 없음)[1]
_Exit정상적인 프로그램 종료 (정리 과정 없음) (C99)[1]
atexit`exit()` 수행 시 호출될 함수 등록[1]
quick_exit정상적인 프로그램 종료 (IO 버퍼 플러시, 최소한의 정리) (C11)[1]
at_quick_exit`quick_exit()` 실행 시 호출될 함수 등록[1]


2. 3. _Exit

`_Exit` 함수는 C99 표준에서 추가된 함수로, 정리 작업 없이 정상적인 프로그램 종료를 수행한다. 이 함수는 `stdlib.h` 헤더 파일(C++에서는 `cstdlib`)에 정의되어 있다.[1]

2. 4. atexit

`atexit` 함수는 `exit` 함수가 호출될 때 실행될 함수를 등록하는 데 사용된다.[1] 이 함수는 C 표준 라이브러리의 일부로, `stdlib.h` 헤더 파일 (C++ 에서는 `cstdlib` 헤더)에 정의되어 있다.[1]

```cpp

#include // 또는

int atexit(void (*function)(void));

```

`atexit` 함수는 매개변수로 종료 시에 호출될 함수 포인터를 받는다.[1] 등록된 함수는 `exit` 함수가 호출될 때, 프로그램이 정상적으로 종료되는 과정에서 역순으로 호출된다.[1] 즉, 마지막에 등록된 함수가 가장 먼저 호출되고, 처음에 등록된 함수가 가장 나중에 호출된다.[1]

```cpp

#include

#include

void cleanup1(void) {

printf("cleanup1 함수 호출됨\n");

}

void cleanup2(void) {

printf("cleanup2 함수 호출됨\n");

}

int main() {

atexit(cleanup1);

atexit(cleanup2);

printf("메인 함수 종료\n");

exit(0); // 또는 return 0;

}

```

위 코드를 실행하면 다음과 같은 결과가 출력된다.

```

메인 함수 종료

cleanup2 함수 호출됨

cleanup1 함수 호출됨

2. 5. quick_exit

C11 표준에서 추가된 함수로, 정리 작업 없이 정상적인 프로그램 종료를 수행하지만, 입출력(I/O) 버퍼는 비운다.

2. 6. at_quick_exit

C11 표준부터 지원되는 `at_quick_exit` 함수는 `quick_exit` 함수 호출 시 실행될 함수를 등록한다.

3. 환경과의 통신 함수

C 프로세스 제어에서 환경과의 통신 함수는 프로그램 실행 환경과 상호작용한다. `getenv` 함수는 환경 변수 목록에 접근하며, `system` 함수는 호스트 환경의 명령 프로세서를 호출한다. 이 함수들은 `stdlib.h` 헤더 파일 (C++ 에서는 `cstdlib` 헤더 파일)에 정의되어 있다.[1]

3. 1. getenv

`getenv` 함수는 환경 변수 목록에 접근하여 특정 환경 변수의 값을 가져온다. 이 함수는 `stdlib.h` (C++ 에서는 `cstdlib`) 헤더 파일에 정의되어 있다.

3. 2. system

호스트 환경의 명령 프로세서를 호출하여 명령을 실행한다. 예를 들어, 쉘 명령어를 실행할 수 있다.[1]

참조

[1] 서적 C in a Nutshell O'Reilly 2005-12
[2] 서적 ISO/IEC 9899:1999 specification http://www.open-std.[...] 2011-11-25
[3] 서적 C in a Nutshell O'Reilly 2005-12
[4] 서적 ISO/IEC 9899:1999 specification http://www.open-std.[...] 2011-11-25



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com