C言語入門(57) 実際にプログラムを読んで理解を深めよう ping編(1)

Posted: 2013年09月19日

前回までで2つめのコマンドのソースを解説してきました。

そのシリーズとして今回からpingコマンドのソースを解説していきます。

pingコマンドは、

  • ネットワーク上の端末に対してICMPを送信

します。

ネットワークの疎通確認などで使用します。

最新のtailコマンドのソースは
http://svnweb.freebsd.org/base/head/sbin/ping/
です。

今回解説するソース
/wp-content/uploads/2013/09/ping.zip

です。

前回と同様に初回はエントリーポイントから
ping.c main関数です。

ping.cは、main関数が長いため複数回を使用して
中身を見ていきます。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

C言語入門(56) 実際にプログラムを読んで理解を深めよう tail編(11)

Posted: 2013年09月12日

前回は、ファイル読み込みバッファ表示処理です。
今回は、ファイル読み処理です。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

C言語入門(55) 実際にプログラムを読んで理解を深めよう tail編(10)

Posted: 2013年08月30日

前回は、逆読みモードの行読み込み処理です。
今回は、ファイル読み込み時のバッファ表示処理です。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:文字列(ロケール)の比較で予想外の動作となる

Posted: 2013年08月26日

文字列の比較ににより問題となる処理を紹介します。
今回はロケールを考慮した比較を対象としています。

プログラムプログラム:

 #include <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    char *pszSrc = "aaa";

    if (0 < strcmp(pszSrc, "AAA")) {
        // 処理

    }

    return 0;
 }

このプログラムにどのように文字列の比較に問題が存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門(54) 実際にプログラムを読んで理解を深めよう tail編(9)

Posted: 2013年08月22日

前回は、逆読みモードのファイル読み込み処理です。
今回は、逆読みモードの行読み込み処理について記載します。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:文字列(数値)の比較で予想外の動作となる

Posted: 2013年08月19日

文字列の比較ににより問題となる処理を紹介します。

プログラムプログラム:

 #include <stdio.h>
 #include <stdlib.h>

 int main(int argc, char *argv[])
 {
    char *pszSrc = "1234";

    if (0 < strcmp(pszSrc, "234")) {
        // 処理

    }

    return 0;
 }

このプログラムにどのように文字列の比較に問題が存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »

C言語入門(53) 実際にプログラムを読んで理解を深めよう tail編(8)

Posted: 2013年08月15日

前回は、逆読みモード(reverse)の読み込み処理です。
今回は、逆読みモードのファイル読み込み処理について記載します。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:ファイルの更新時刻に2038年問題がある

Posted: 2013年08月14日

ファイルの更新時刻する際によく書いてしまうバグを紹介します。

今回は、64bit環境が前提として記載しています。

プログラムプログラム:

 #include  <stdio.h>
 #include  <Windows.h>

 int main(int argc, char *argv[])
 {
     FILE *fp;
     fp = fopen(argv[1],"r");
     if (fp == NULL) {
        // ファイルが開けない
        return 1;
     }

    struct stat sStat;
    fstat(fp, &sStat);

    // 処理

    return 0;
 }

このプログラムにどのようなファイル更新時刻取得のバグがあると思いますか?



カテゴリー: バグ, プログラム | タグ: , , , | コメント無し »

C言語入門(52) 実際にプログラムを読んで理解を深めよう tail編(7)

Posted: 2013年08月08日

前回は、通常モード(foward)の読み込み処理を見ました。
今回は、逆読みモード(reverse)の読み込み処理です。



カテゴリー: プログラム, 入門 | タグ: , , | コメント無し »

バグ:大きいサイズのファイルサイズ取得したくて正しく取得できない

Posted: 2013年08月05日

ファイルのサイズ取得で書いてしまうバグを紹介します。

プログラムプログラム:

 #include <stdio.h>

 int main(int argc, char *argv[])
 {
     FILE *fp;
     fp = fopen(argv[1],"r");
     if (fp == NULL) {
        // ファイルが開けない
        return 1;
     }

     // ファイルの最後の位置へ移動しファイルサイズを取得
     long nfileSize = _filelength(fp);

    // 処理

     delete[] pFileData;

    return 0;
 }

このプログラムにどのようにファイルサイズ取得処理にバグが存在すると思いますか?



カテゴリー: バグ, プログラム | タグ: , , | コメント無し »
Page 1 of 9123456789