- ベストアンサー
C言語でのソケット通信のclose
C言語でソケット通信をするプログラムの見本は、大体がサーバのプログラム内でサーバとクライアントのファイルディスクリプタを、クライアントのプログラム内でクライアントのファイルディスクリプタをcloseしてから終了しています。 でも、プログラムを終了させる時にopenしているファイルディスクリプタは自動的にcloseされるのだから、わざわざ明示的にcloseする必要がないと思います。 「明示的にcloseするのがマナーだから」という理由しか、調べても出てきませんでした。 明示的に全てのファイルディスクリプタをcloseする理由をご存知の方、教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
普通のアプリケーションは、終了するまでソケットを開きっぱなしということはなく、終了する前のどこかの段階で閉じたり、また開いたりします。 ということは、サンプルはソケットを閉じる方法を教えるべきです。 サンプルは教えるためのものであって、完成されたプログラムではありませんから、目的を見失って重箱の隅をつついても意味がありません。実践ではどうなるかを考えましょう。
その他の回答 (1)
- maiko0318
- ベストアンサー率21% (1483/6969)
回答No.2
特定のOS、特定の言語に限ったことではないですが、 一般に、closeすると出力バッファにあるものを送ってからプログラム終了となりますが、 closeしないと出力バッファにたまっているデータが送られないまま プログラムが終了してしまうものがあるためです。
質問者
お礼
なるほど、知らなかったです。 ありがとうございました!
お礼
なるほど。納得です。 ありがとうございました。