XtAppAddSignal(3) シグナルソースの登録と削除を行う

Other Alias

XtRemoveSignal, XtNoticeSignal

書式

XtSignalId XtAppAddSignal(app_context, proc, client_data)

      XtAppContext app_context;

      XtSignalCallbackProc proc;

      XtPointer client_data;

void XtRemoveSignal(id)

      XtSignalId id;

void XtNoticeSignal(id)

      XtSignalId id)

引き数

app_context
アプリケーションコンテクストを指定する。
client_data
シグナルが起きたとき、指定された手続きに渡される引き数を指定する。
id
登録時に XtAppAddSignal が返した ID を指定する。
proc
シグナルが起きたときに呼び出される手続きを指定する。

説明

関数 XtAppAddSignal は、イントリンシクスのコンテクスト内におけるシグナル処理の機構を動作さ せる。OS 依存のシグナルハンドラを立ち上げる前に、アプリケーションは XtAppAddSignal を呼び、返された id をシグナルハンドラからアクセスできる場所に格 納することができる。

OS からのシグナルを受け取ったとき、アプリケーションは XtAppAddSignal が返した id を使って XtNoticeSignal を呼ぶことができる。

XtNoticeSignal は、シグナルハンドラから安全に呼び出すことができる、イントリンシクス中 唯一の関数である。 イントリンシクスが登録されたコールバックを起動することができるようにな る前に XtNoticeSignal が複数回呼び出された場合、そのコールバックは一度しか呼ばれない。論理的 には、イントリンシクスは登録されているそれぞれのコールバックについて 「ペンディング」を管理している。 このフラグの初期値は False であり、 XtNoticeSignal によって True に設定される。 このフラグが True ならばイントリンシクスは必ずコールバックを呼び、その呼び出しの直前に フラグに False を設定する。

関数 XtRemoveSignal を呼ぶことにより、指定したイントリンシクスのシグナルハンドラを削除できる。 クライアントは XtRemoveSignal を呼び出す前にシグナルのソースを無効にしなければならない。