dポイントプレゼントキャンペーン実施中!

C言語でソケット通信をするプログラムの見本は、大体がサーバのプログラム内でサーバとクライアントのファイルディスクリプタを、クライアントのプログラム内でクライアントのファイルディスクリプタをcloseしてから終了しています。
でも、プログラムを終了させる時にopenしているファイルディスクリプタは自動的にcloseされるのだから、わざわざ明示的にcloseする必要がないと思います。
「明示的にcloseするのがマナーだから」という理由しか、調べても出てきませんでした。

明示的に全てのファイルディスクリプタをcloseする理由をご存知の方、教えてください。

A 回答 (2件)

普通のアプリケーションは、終了するまでソケットを開きっぱなしということはなく、終了する前のどこかの段階で閉じたり、また開いたりします。


ということは、サンプルはソケットを閉じる方法を教えるべきです。
サンプルは教えるためのものであって、完成されたプログラムではありませんから、目的を見失って重箱の隅をつついても意味がありません。実践ではどうなるかを考えましょう。
    • good
    • 0
この回答へのお礼

なるほど。納得です。
ありがとうございました。

お礼日時:2014/10/22 12:58

特定のOS、特定の言語に限ったことではないですが、



一般に、closeすると出力バッファにあるものを送ってからプログラム終了となりますが、
closeしないと出力バッファにたまっているデータが送られないまま
プログラムが終了してしまうものがあるためです。
    • good
    • 0
この回答へのお礼

なるほど、知らなかったです。
ありがとうございました!

お礼日時:2014/10/22 12:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!