C 프로세스 제어
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
C 프로세스 제어는 C 프로그래밍 언어에서 프로그램의 실행을 제어하는 데 사용되는 함수들을 의미한다. `stdlib.h` (C++) 또는 `cstdlib` 헤더 파일에 정의되어 있으며, 프로그램 종료, 종료 시 호출될 함수 등록, 환경 변수 접근, 호스트 환경 명령 프로세서 호출 등의 기능을 제공한다. 주요 함수로는 abort, exit, _Exit, atexit, quick_exit, at_quick_exit, getenv, system 등이 있다.
더 읽어볼만한 페이지
C 프로세스 제어 | |
---|---|
C 표준 라이브러리 | |
일반 주제 | |
자료형 | C 자료형 |
문자 분류 | C 문자 분류 |
문자열 처리 | C 문자열 처리 |
수식 함수 | C 수식 함수 |
파일 입출력 | C 파일 입출력 |
날짜와 시간 함수 | C 날짜와 시간 함수 |
지역화 함수 | C 지역화 함수 |
메모리 할당 | C 동적 메모리 할당 |
프로세스 제어 | C 프로세스 제어 |
시그널 | C 시그널 처리 |
대체 토큰 | C 대체 토큰 |
기타 주제 |
2. 프로그램 종료 함수
프로세스 제어 함수들은 `stdlib.h` 헤더(C++에서는 `cstdlib` 헤더)에 정의되어 있다.
함수 | 설명 |
---|---|
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`함수는 최소한의 정리 작업만 수행하고 종료한다.
함수 | 설명 |
---|---|
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