名称
pthread_atfork() ― fork ハンドラーの登録
構文
#include <pthread.h>
int pthread_atfork(
void (*prepare)(void),
void (*parent)(void),
void (*child)(void)
);
パラメータ
| prepare | | この関数は、 fork() を実行する前に呼び出されます。 |
| parent | | この関数は、 fork() を実行した後に、親プロセスで呼び出されます。 |
| child | | この関数は、 fork() を実行した後に、子プロセスで呼び出されます。 |
説明
pthread_atfork() 関数は、アプリケーション固有の fork ハンドラーをインストールします。
fork ハンドラーは、 fork() 実行の前後に、 fork() を呼び出しているスレッドのコンテキスト内で呼び出されます。 atexit() ハンドラーの場合と同様、これらの fork ハンドラーが呼び出されるための特別な処理を、アプリケーションで行う必要はありません。
ハンドラーは、 fork() が実行されたとき、システムから呼び出されます。
prepare() 関数は、 fork() 実行の前に、親プロセスで呼び出されます。 parent() 関数は、 fork() 実行の後に、親プロセスで呼び出されます。 child() 関数は、 fork() 実行の後に、子プロセスで呼び出されます。
処理上フォークハンドラーが不要の場合は、対応するフォークハンドラーのパラメータを NULL に設定します。
プロセスは、フォークハンドラー関数を複数インストールできます。 parent() および child() フォークハンドラーは、インストールされた順序で呼び出されます
(「 ファーストイン、ファーストアウト 」)。 prepare() フォークハンドラーは、インストールとは逆の順序で呼び出されます
(「 ラストイン、ファーストアウト 」)。
戻り値
正常終了すると、 pthread_atfork() は、0 を返します。
それ以外の場合、エラーの内容を表すエラー番号を返します (errno 変数は使用しません)。
エラー
以下の条件の場合、 pthread_atfork() 関数は、該当するエラー番号を返します。
| [ENOMEM] | | フォークハンドラーをインストールするのに十分なテーブル領域がない場合。 |
著者
pthread_atfork() は、IEEE POSIX P1003.1c 標準から派生しました。
標準準拠
pthread_atfork(): POSIX 1003.1c.