C言語

ゾンビプロセス

ゾンビプロセスとは 子プロセスの終了時に、親プロセスがwait()を実行しないと、子プロセスはゾンビプロセスになる。 ubuntuではpsコマンドで、と表示されます。 プロセスを利用したプログラムでは、親プロセスと子プロセスの終了のタイミングによって、子プ…

エラー処理

今回はエコーサーバのエラー処理機能を作成します。 ソフトウェアの開発のデバックやサーバの構築の現場では、トラブル解決の手段としてログを頻繁に利用します。そのためエラー発生時には、できるだけ詳細にエラーの内容を表示できるようにするべきです。 …

エコーサーバの改良�

前回で、エコーサーバがクライアントからの入力に何度でも応答を返すように改良をしました。しかし、未だに問題点があります。複数のクライアントからの入力に対応できていないのです。 実際に試してみるとすぐわかるのですが、クライアントAがエコーサーバ…

エコーサーバの改良①

これからエコーサーバのプログラムにちょくちょく改良を加えていきます。以前のソースコードでは、一度でもクライアントが書き込むと、強制的にプログラムが修正します。そこでクライアントは何度書き込んでも、エコーサーバから応答が返ってくるように改良…

エコーサーバの実装

前回の知識を用いてサーバを実装してみます。サーバといってもウェブサーバ・メールサーバ・ファイルサーバ・DNSサーバとさまざまありますが、エコーサーバとは、クライアントからの入力をそのまま出力するという最も単純(であまり有用でない)なサーバです。…

分割コンパイル

前回にエコーサーバを実装しましたが、今後ウェブサーバ等のもう少し実用的なサーバの実装にも挑戦してみます。 方針としてはエコーサーバを骨組みとして、そこから機能を逐次追加していく方針です。エコーサーバのプログラムに直接加筆修正を加えてもよいの…

C言語でのソケットプログラミングの基礎

ネットワークプログラミングの難しさとは C言語のネットワークプログラミングは、システムコールや構造体が複雑でやや苦手意識があります。勉強の意味をこめてまとめてみました。 しかし、ネットワークプログラミングの基本で本当に難しいのは、そうした複雑…