LinuxはSystem Vの規則に従い、デフォルトでSIGIOで終了しますか?

LinuxはSystem Vの規則に従い、デフォルトでSIGIOで終了しますか?

「Unixネットワークプログラミング」という本には、このような言葉があります。

ソケット所有者を設定する前に、シグナルハンドラをビルドする必要があります。 Berkeley派生の実装では、基本的な操作はSIGIOを無視するものなので、両方の関数呼び出しの順序は重要ではありません。したがって、2つの関数呼び出しの順序を変更すると、fcntlを呼び出した後に信号が生成される可能性は低くなりますが、これが発生すると信号は削除されます。ただし、SVR4では、SIGIOはヘッダーにSIGPOLLとして定義されており、SIGPOLLのデフォルトの動作はプロセスを終了することです。したがって、SVR4では、ソケット所有者を設定する前にシグナルハンドラがインストールされていることを確認します。

Linuxカーネル文書では、signal.hSystem V以降のPOSIXの動作が参照されます。コメントで:

*   +--------------------+------------------+
 *  |  POSIX signal      |  default action  |
 *  +--------------------+------------------+
 *  |  SIGHUP            |  terminate   |
 *  |  SIGINT            |  terminate   |
   ....
 *  |  SIGPROF           |  terminate   |
 *  |  SIGPOLL/SIGIO     |  terminate   |
 *  |  SIGSYS/SIGUNUSED  |  coredump    |
 *  |  SIGSTKFLT         |  terminate   |
   .... etc.

ただし、このポリシーが実際に実装されているソースはどこにもありません。 SIGIOをSIGPOLLと同じに設定する方程式はないようです。それでは、LinuxはBerkeleyの動作に従いますか、またはSystem Vの動作に従いますか?

ベストアンサー1

おすすめ記事