맨위로가기

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 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.
C 프로세스 제어
C 표준 라이브러리
일반 주제
자료형C 자료형
문자 분류C 문자 분류
문자열 처리C 문자열 처리
수식 함수C 수식 함수
파일 입출력C 파일 입출력
날짜와 시간 함수C 날짜와 시간 함수
지역화 함수C 지역화 함수
메모리 할당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