abort
현재 프로세스를 중단하고 오류 코드를 반환합니다.
참고 항목
테스트 또는 디버깅 시나리오를 제외하고 이 방법을 사용하여 Microsoft Store 앱 또는 UWP(유니버설 Windows 플랫폼) 앱을 종료하지 마세요. Microsoft Store 정책에 따라 스토어 앱을 닫는 프로그래밍 방식 또는 UI 방법은 허용되지 않습니다. 자세한 내용은 UWP 앱 수명 주기를 참조 하세요.
구문
void abort( void );
반환 값
abort
는 호출 프로세스에 대한 제어를 반환하지 않습니다. 기본적으로 중단 신호 처리기를 확인하고, 설정된 경우 SIGABRT
를 표시합니다. 그런 다음 abort
는 현재 프로세스를 종료하고 종료 코드를 부모 프로세스에 반환합니다.
설명
Microsoft 전용
기본적으로 디버그 런타임 라이브러리를 사용하여 앱을 빌드하면, SIGABRT
가 표시되기 전에 abort
루틴은 오류 메시지를 표시합니다. 콘솔 모드에서 실행되는 콘솔 앱에 대해서는 메시지가 STDERR
로 전송됩니다. 창 모드에서 실행되는 Windows 데스크톱 앱 및 콘솔 앱은 메시지 상자에 메시지를 표시합니다. 메시지를 표시하지 않으면 플래그를 지우는 _WRITE_ABORT_MSG
데 사용합니다_set_abort_behavior
. 표시되는 메시지는 사용 중인 런타임 환경 버전에 따라 달라집니다. 최신 버전의 Visual C++를 사용하여 빌드된 애플리케이션의 경우 메시지는 다음과 유사합니다.
R6010 - abort()가 호출되었습니다.
C 런타임 라이브러리의 이전 버전에서는 다음과 같은 메시지가 표시됐습니다.
이 애플리케이션에서 비정상적인 종료를 런타임에 요청했습니다. 자세한 내용은 해당 애플리케이션의 지원 팀에 문의하십시오.
디버그 모드에서 프로그램을 컴파일하면 메시지 상자에 중단, 다시 시도 또는 무시 옵션이 표시됩니다. 사용자가 중단을 선택하면 프로그램이 즉시 종료되고 종료 코드 3이 반환됩니다. 사용자가 다시 시도를 선택하면 사용 가능한 경우 Just-In-Time 디버깅을 위해 디버거가 호출됩니다. 사용자가 무시를 선택하면 abort
는 일반적인 처리 작업을 계속 진행합니다.
그런 다음 abort
는 정품 및 디버그 빌드에서 중단 신호 처리기가 설정되었는지를 확인합니다. 기본이 아닌 신호 처리기가 설정된 경우 abort
는 raise(SIGABRT)
를 호출합니다. 이 함수를 signal
사용하여 중단 신호 처리기 함수를 신호와 연결합니다 SIGABRT
. 사용자 지정 작업(예: 리소스 정리 또는 정보 기록)을 수행하고 처리기 함수에서 자체 오류 코드로 앱을 종료할 수 있습니다. 사용자 지정 신호 처리기가 정의 abort
되지 않은 경우 신호를 발생 SIGABRT
하지 않습니다.
기본적으로 데스크톱 또는 콘솔 앱 abort
의 비 디버그 빌드에서 Windows 오류 보고 Service 메커니즘(이전의 Dr. Watson)을 호출하여 Microsoft에 오류를 보고합니다. _set_abort_behavior
를 호출하고 _CALL_REPORTFAULT
플래그를 설정하거나 마스킹하여 이 동작을 활성화 또는 비활성화할 수 있습니다. 플래그가 설정되면 Windows에 "문제가 발생하여 프로그램이 제대로 작동하지 않습니다."와 같은 텍스트가 있는 메시지 상자가 표시됩니다. 사용자는 디버그 단추를 사용하여 디버거를 호출하도록 선택하거나 프로그램 닫기 단추를 선택하여 운영 체제에서 정의한 오류 코드로 앱을 종료할 수 있습니다.
Windows 오류 보고 처리기가 호출 abort
되지 않으면 종료 코드 3을 사용하여 프로세스를 종료하도록 호출 _exit
하고 부모 프로세스 또는 운영 체제에 제어권을 반환합니다. _exit
는 스트림 버퍼를 플러시하거나 처리를 수행 atexit
/_onexit
하지 않습니다.
Windows 호환성을 위해 호출 _exit
시 abort
Windows ExitProcess
API를 호출하여 DLL 종료 루틴을 실행할 수 있습니다. 소멸자는 실행 파일에서 실행되지 않지만 실행 파일의 프로세스 공간에 로드된 DLL의 경우도 마찬가지일 수 있습니다. 이 동작은 C++ 표준을 엄격하게 준수하지 않습니다. 모든 DLL을 포함한 프로세스를 즉시 종료하려면 Windows TerminateProcess
API를 사용합니다. 표준 규격 동작을 호출 TerminateProcess
하는 중단 신호 처리기를 등록할 수도 있습니다. 규격 동작은 Windows 호환성에 약간의 비용이 들 수 있습니다.
CRT 디버깅에 대한 자세한 내용은 CRT 디버깅 기술을 참조 하세요.
End Microsoft Specific
기본적으로 이 함수의 전역 상태는 애플리케이션으로 범위가 지정됩니다. 변경하려면 CRT의 전역 상태를 참조하세요.
요구 사항
루틴에서 반환된 값 | 필수 헤더 |
---|---|
abort |
<process.h> 또는 <stdlib.h> |
예시
다음 프로그램은 파일을 열려고 시도하고 실패하는 경우 중단합니다.
// crt_abort.c
// compile with: /TC
// This program demonstrates the use of
// the abort function by attempting to open a file
// and aborts if the attempt fails.
#include <stdio.h>
#include <stdlib.h>
int main( void )
{
FILE *stream = NULL;
errno_t err = 0;
err = fopen_s(&stream, "NOSUCHF.ILE", "r" );
if ((err != 0) || (stream == NULL))
{
perror( "File could not be opened" );
abort();
}
else
{
fclose( stream );
}
}
File could not be opened: No such file or directory
참고 항목
사용 abort
abort
함수
프로세스 및 환경 제어
_exec
, _wexec
함수
exit
, , _Exit
_exit
raise
signal
_spawn
, _wspawn
함수
_DEBUG
_set_abort_behavior