サーバー側とクライアント側の両方で、AF_INETソケットでどの種類の信号を処理する必要がありますか?
1852 次
1 に答える
2
自分がしていることをどのように行っているかによっては、処理が必要になる場合SIG_PIPE
があります。これは、接続が任意に切断された場合に発生する可能性があります。
他の信号を処理する必要はありません。
select()
orpoll()
または(個人的な好み)を使用している場合は、読み取り/書き込みの可用性を確認する前にepoll()
、エラー(たとえばPOLLHUP
)を確認する必要があります。
また、の戻り値も常に確認する必要がありますread()/write()/send()/recv()
。エラーがある場合は-1を返しますが、0を返す場合は、もう一方の端が切断されていることを意味します。つまり、0の読み取りは、0バイトが読み取られたことを意味しますが、接続は引き続き良好です。そうではありません。ソケットを閉じます。これはPOSIXで規定されています。
于 2012-05-06T11:02:43.033 に答える