abort
更新 : 2007 年 11 月
現在のプロセスを中止し、エラー コードを返します。
void abort( void );
戻り値
abort は、呼び出しプロセスにコントロールを返しません。既定では、現在のプロセスを終了し、終了コード 3 を返します。
解説
既定では、abort ルーチンは次のようなメッセージを出力します。
"This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information."
次に、raise(SIGABRT) を呼び出します。SIGABRT シグナルに応答するアクションは、前回の signal 関数の呼び出しでシグナルに対して定義されたアクションによって決まります。SIGABRT の既定のアクションは、呼び出しプロセスに対して終了コード 3 を返して終了し、呼び出しプロセスまたはオペレーティング システムにコントロールを返します。abort では、ストリーム バッファがフラッシュされず、atexit/_onexit 処理が実行されます。
abort は、ルーチンを呼び出したアプリケーションのタイプに基づいてメッセージの出力先を決定します。コンソール アプリケーションは、常に stderr を通してメッセージを受信します。シングルスレッドまたはマルチスレッドの Windows ベースのアプリケーションでは、abort は Windows MessageBox 関数を呼び出してメッセージ ボックスを作成し、メッセージと [OK] ボタンを表示します。ユーザーが [OK] をクリックすると、プログラムはすぐに処理を中止します。メッセージの出力を抑止するには、適切な引数を使用して _set_abort_behavior を呼び出します。
ランタイム ライブラリのデバッグ バージョンを使用してアプリケーションをリンクした場合、abort が作成するメッセージ ボックスには [失敗]、[再試行]、および [無視] の 3 つのボタンが表示されます。[失敗] をクリックすると、プログラムはすぐに処理を中止します。[再試行] をクリックすると、Just-In-Time (JIT) デバッグが有効な場合は、デバッガが呼び出されるため、ユーザーはプログラムのデバッグを行うことができます。[無視] をクリックすると、abort は [OK] を表示するメッセージ ボックスを作成して通常の処理の実行を継続します。
Visual C++ 2005 では、abort は、Microsoft に失敗をレポートするためのエラー レポート機構を呼び出します。この機能は、_set_abort_behavior を呼び出して無効にできます。
CRT デバッグの詳細については、「CRT のデバッグ技術」を参照してください。
必要条件
ルーチン |
必須ヘッダー |
---|---|
abort |
<process.h> または <stdlib.h> |
使用例
次のプログラムでは、ファイルを開くことを試み、失敗した場合は処理を中止します。
// crt_abort.c
// compile with: /c
// 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
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。