0

サーバー側とクライアント側の両方で、AF_INETソケットでどの種類の信号を処理する必要がありますか?

4

1 に答える 1

2

自分がしていることをどのように行っているかによっては、処理が必要になる場合SIG_PIPEがあります。これは、接続が任意に切断された場合に発生する可能性があります。

他の信号を処理する必要はありません。

select()orpoll()または(個人的な好み)を使用している場合は、読み取り/書き込みの可用性を確認する前にepoll()、エラー(たとえばPOLLHUP)を確認する必要があります。

また、の戻り値も常に確認する必要がありますread()/write()/send()/recv()。エラーがある場合は-1を返しますが、0を返す場合は、もう一方の端が切断されていることを意味します。つまり、0の読み取りは、0バイトが読み取られたことを意味しますが、接続は引き続き良好です。そうではありません。ソケットを閉じます。これはPOSIXで規定されています。

于 2012-05-06T11:02:43.033 に答える