のぴぴのメモ

自分用のLinuxとかの技術メモ

Cプログラム

C言語/glibc getaddrinfo()を使ってホスト名からIPアドレスに変換するサンプル

getaddrinfo()による名前解決とIPアドレスに解決した情報の参照方法のサンプルコードを以下に記載します。またおまけで、getaddrinfo()を実行した時の挙動をざっくり説明します。

プロセスのVSZ,RSSとfree,meminfoの関係を実機で確認する

psコマンドのVSZ(仮想メモリ)、RSS(物理メモリ)の挙動について質問を受けたので、簡単な検証プログラムを作ってmalloc/freeのメモリ確保/解放や、データの読み込み・書き込みとVSZ/RSSの関係性及び、freeコマンドとmeminfo情報でシステムワイドなメモリの挙…

Linuxのclock_gettime()でナノ秒の時刻取得をするCのサンプル

1.はじめに 2.コードと実行例 (1)コード (2)実行例 3.説明 (1)clock_gettime(CLOCK_REALTIME, &ts) (2)localtime_r( &ts.tv_sec, &tm) (3)printfで出力 1.はじめに clock_gettime()で時刻を取得し時刻をナノ秒で表示するサンプルです。時刻取得といえばgetti…

(linux)x86(32bit)でアセンブラでシステムコールを呼び出す方法。

はじめに 2015.12.28追記 アセンブラでシステムコールを呼びだす方法 参考 はじめに 標準Cライブラリ(Linuxではglibc)に頼らず、システムコールを呼びして見たいなとの思いから、勉強がてらアセンブラでシステムコールを呼びだす方法をまとめてみました。 20…

32bitと64bitプロセスのtime_tのbitsを実機確認してみる

サンプルプログラム 実機確認 32bitプロセスの場合 64bitプロセスの場合 蛇足 32bitプロセスと64bitプロセスで、glibcのtime_t変数のビット数がどう違うのか確認してみました。 サンプルプログラム #include <stdio.h> #include <stdlib.h> #include <sys/time.h> #define sizeof_bits(x) (i</sys/time.h></stdlib.h></stdio.h>…

データ圧縮アルゴリズムを整理してみた

データ圧縮(可逆圧縮)方式についてまとめました。 まとめ 可逆圧縮の実用的アルゴリズムのほとんどは、LZ法を元にしている LZは、ジェイコブ・ジヴ(Jacob Ziv)とエイブラハム・レンペル(Abraham Lempel)が開発した圧縮アルゴリズム LZ法は、LZ77と、LZ78…

configureの作り方(autotoolsの使い方)

はじめに 作成の流れ 手順詳細 必要ファイルの作成 Makefile.am作成(後の作成/修正も可) autoscanコマンドの実行 configure.acファイルの作成&編集 aclocal実行以降 はじめに オープンソースでよくある、configure → make → make installというセットアップ…

ダイレクトIOの実装

ファイルシステム上のファイルにキャッシュを解さずread/writeするためには、DirectIOで操作する必要がある。DirectIOを操作するには、 ファイルをオープンする時に、O_DIRECTオプションを付与する read/writeで操作する際のバッファは、512KB(Linux kernel2…

デーモンは2度forkするのが作法らしい

デーモンプロセス起動時の作法 サンプルプログラム デーモンプロセス起動時の作法 デーモンを起動する場合、2度forkするのが作法らしく、これは「セッションリーダにならないようにすることで端末の制御を誤ってしないように」ということらしい。詳しくはこ…