abort
Membatalkan proses saat ini dan mengembalikan kode kesalahan.
Catatan
Jangan gunakan metode ini untuk mematikan aplikasi Microsoft Store atau aplikasi Platform Windows Universal (UWP), kecuali dalam skenario pengujian atau penelusuran kesalahan. Cara terprogram atau UI untuk menutup aplikasi Store tidak diizinkan sesuai dengan kebijakan Microsoft Store. Untuk informasi selengkapnya, lihat Siklus hidup aplikasi UWP.
Sintaks
void abort( void );
Nilai hasil
abort
tidak mengembalikan kontrol ke proses panggilan. Secara default, ini memeriksa handler sinyal pembatalan dan menaikkan SIGABRT
apakah ada yang diatur. Kemudian abort
mengakhiri proses saat ini dan mengembalikan kode keluar ke proses induk.
Keterangan
Khusus Microsoft
Secara default, saat aplikasi dibangun dengan pustaka runtime debug, abort
rutinitas menampilkan pesan kesalahan sebelum SIGABRT
dinaikkan. Untuk aplikasi konsol yang berjalan dalam mode konsol, pesan dikirim ke STDERR
. Aplikasi desktop Windows dan aplikasi konsol yang berjalan dalam mode berjendela menampilkan pesan dalam kotak pesan. Untuk menyembunyikan pesan, gunakan _set_abort_behavior
untuk menghapus _WRITE_ABORT_MSG
bendera. Pesan yang ditampilkan tergantung pada versi lingkungan runtime yang digunakan. Untuk aplikasi yang dibangun dengan menggunakan versi Terbaru Visual C++, pesan menyerupi yang satu ini:
R6010 - abort() telah dipanggil
Di versi pustaka runtime C sebelumnya, pesan ini ditampilkan:
Aplikasi ini telah meminta Runtime untuk mengakhirinya dengan cara yang tidak biasa. Silakan hubungi tim dukungan aplikasi untuk informasi lebih lanjut.
Saat program dikompilasi dalam mode debug, kotak pesan menampilkan opsi untuk Batalkan, Coba Lagi, atau Abaikan. Jika pengguna memilih Batalkan, program segera berakhir dan mengembalikan kode keluar 3. Jika pengguna memilih Coba Lagi, debugger dipanggil untuk penelusuran kesalahan just-in-time, jika tersedia. Jika pengguna memilih Abaikan, abort
lanjutkan pemrosesan normal.
Dalam build ritel dan debug, abort
kemudian memeriksa apakah handler sinyal pembatalan diatur. Jika handler sinyal non-default diatur, abort
panggil raise(SIGABRT)
. signal
Gunakan fungsi untuk mengaitkan fungsi handler sinyal batal dengan SIGABRT
sinyal. Anda dapat melakukan tindakan kustom—misalnya, membersihkan sumber daya atau informasi log—dan mengakhiri aplikasi dengan kode kesalahan Anda sendiri di fungsi handler. Jika tidak ada handler sinyal kustom yang didefinisikan, abort
tidak menaikkan SIGABRT
sinyal.
Secara default, dalam build non-debug aplikasi desktop atau konsol, abort
lalu memanggil mekanisme layanan Pelaporan Galat Windows (sebelumnya dikenal sebagai Dr. Watson) untuk melaporkan kegagalan ke Microsoft. Perilaku ini dapat diaktifkan atau dinonaktifkan dengan memanggil dan mengatur _set_abort_behavior
atau menutupi _CALL_REPORTFAULT
bendera. Ketika bendera diatur, Windows menampilkan kotak pesan yang memiliki teks seperti "Masalah menyebabkan program berhenti bekerja dengan benar." Pengguna dapat memilih untuk memanggil debugger dengan tombol Debug , atau memilih tombol Tutup program untuk mengakhiri aplikasi dengan kode kesalahan yang ditentukan oleh sistem operasi.
Jika handler pelaporan kesalahan Windows tidak dipanggil, maka abort
panggilan _exit
untuk mengakhiri proses dengan kode keluar 3 dan mengembalikan kontrol ke proses induk atau sistem operasi. _exit
tidak membersihkan buffer aliran atau melakukan atexit
/_onexit
pemrosesan.
Untuk alasan kompatibilitas Windows, ketika abort
panggilan _exit
, itu dapat memanggil WINDOWS ExitProcess
API, yang pada gilirannya memungkinkan rutinitas penghentian DLL berjalan. Destructor tidak dijalankan dalam executable, tetapi hal yang sama mungkin tidak benar dari DLL yang dimuat dalam ruang proses yang dapat dieksekusi. Perilaku ini tidak sepenuhnya sesuai dengan standar C++. Untuk segera mengakhiri proses termasuk DLL apa pun, gunakan WINDOWS TerminateProcess
API. Anda juga dapat mendaftarkan handler sinyal pembatalan yang memanggil TerminateProcess
perilaku yang mematuhi standar. Perilaku yang sesuai mungkin dikenakan biaya dalam kompatibilitas Windows.
Untuk informasi selengkapnya tentang penelusuran kesalahan CRT, lihat teknik penelusuran kesalahan CRT.
Akhiri Microsoft Spesifik
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubahnya, lihat Status global di CRT.
Persyaratan
Rutin | Header yang diperlukan |
---|---|
abort |
<process.h> atau <stdlib.h> |
Contoh
Program berikut mencoba membuka file dan membatalkan jika upaya gagal.
// 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
Lihat juga
Menggunakan abort
abort
fungsi
Kontrol proses dan lingkungan
_exec
, _wexec
fungsi
exit
, , _Exit
_exit
raise
signal
_spawn
, _wspawn
fungsi
_DEBUG
_set_abort_behavior