fcntlでのファイルのロック

Linuxでのプログラムではオープンしているファイルに書き込みや読み込みを行う際にはロックを介さずに行われてします. ファイルに対して排他アクセスを制御するために,fcntlまたはflockを用いて行われることが多い.今回はfcntlを用いてファイルに対してロ…

GDBMを使ってみる4

GDBMを使ってみる3 - 日進月歩からの続き.GDBMに関しては今回が最後かな. データベースのエクスポートとインポート データベースのバックアップをとるときや,異なるバージョンへ移行や移植する場合等にエクスポートとインポートを利用すれば便利. だたし…

GDBMを使ってみる3

日進月歩の続き.これまでに記述していない機能について. シーケンシャルアクセス 格納データのキーに対してシーケンシャルアクセスを行う. シーケンシャルアクセスを行うには以下の2つの関数を用いて行う.datum gdbm_firstkey (GDBM FILE dbf ) datum gd…

GDBMを使ってみる2

GDBMを使ってみる1 - 日進月歩の続き. 今回はgdbmのデータベースに対してデータの挿入と読み込みについて考えていく.まずデータベースとのやり取りにはdatum構造体を用いる. 定義は以下.typedef struct { char *dptr; int dsize; } datum;keyとvalue共…

GDBMを使ってみる1

GDBMは拡張可能ハッシュを使用するデータベース関数のライブラリである.UNIXのdbmに似たようなもの. MySQLやPostgreSQLのような関係データベースではなく,Key-Value格納の組み込み型のデータベースとして利用する. 今回はこのGDBMの使い方をGDBMから探っ…

GDBMインストール

Ubuntu10.4にデータベースの一種であるGDBM(GNU dbm)をインストールする. 対象バージョンはgdbm-1.10.まずGDBMよりtar.gzファイルをダウンロードする. wgetを用いてのダウンロードは以下.$wget ftp://ftp.gnu.org/gnu/gdbm/gdbm-1.10.tar.gz続いてインス…

PostgreSQLの文字化け

Ubuntu10.4にPostgreSQL8.4をインストールを行うとPostgreSQLのエラーメッセージが文字化けする.そこでこの文字化けを解消.$sudo vi /etc/postgresql/8.4/main/postgresql.confでPostgreSQLの設定ファイルを以下のように編集前の行を編集後のように変更す…

CPUのクロック数調整による省電力2

CPUのクロック数調整による省電力1 - 日進月歩からの続き.前回はCPUの動作モードやら周波数の段階やらの話. 今回はcpufreqdデーモンの話でも...cpufreqdデーモンは計算機の状況によって動的にCPUの周波数を変える役割がある. 例えば,バッテリーが少なく…

CPUのクロック数調整による省電力1

Linuxカーネルのcpufreqの機能を用いてCPUのクロック数を調整することで省電力化を目指す. OSはUbuntu11.10でCPUはCorei7-2600Kを搭載した計算機で実践してみた.まずはcpufreqまわりの設定から. 以下のコマンドで必要なパッケージをインストール.$sudo a…

NTPによる時刻設定

最近計算機の時刻が進みすぎてニコ動のログインや,他の計算機上でのmake処理でエラーメッセージが表示されるので計算機の時刻を正しく直すことにした.まず,計算機上の時刻にはハードウェアクロックとシステムクロックの2種類が存在する. 名称から何となく…

BerkeleyDB4.8のインストール

BerkeleyDBライブラリのバージョン4.8のインストールをUbuntu1.10で行った時のメモ. BerkeleyDBはInMemoryのデータベースとしてFireFoxなどにも利用されている. MySQLやPostgreSQLのような関係データベースとは異なり,Key-Value型のDBMSである.まず以下のOr…

RSA公開鍵暗号認証でSSH接続

LinuxでSSHサーバを立ち上げると初期設定での認証はパスワード認証となっている. ここではSSHの認証をRSA公開鍵暗号によるものに変更する. まず始めに以下のコマンドで認証で用いる公開鍵と秘密鍵のペアの作成を行う.$ ssh-keygen -b 2048 -t rsa Generating…

vi(vim)のカスタマイズ設定

設定ファイルの書き換えや開発でvi(vim)を頻繁に用いる場合には,vi(vim)を使いやすい状態にカスタマイズしておくと便利.ユーザごとのカスタマイズを行う場合は以下のファイルを作成する. viの場合 : ~/.exrc vimの場合 : ~/.vimrc vimにおいても"~/exrc"で…

includeファイルのパス設定

gccでコンパイルを行う際,"stdio.h"などの標準ヘッダファイルをインクルードしているうちはあまり問題視することはないがモジュールごとにソースコードを分割する場合には,自分で作成したヘッダファイルを参照する必要が生じる. この時にコンパイルを行う…

共有ライブラリの設定

Linux上でGNUコンパイラを用いてコンパイルを行うとき,参照して欲しいライブラリのディレクトリは"-L"オプションで指定することによって指定することが出来る. しかし標準ライブラリのパスなどはシステム側で設定されている為,"-L"オプションで指定するこ…

時間の計測を行う

C言語において時間の計測を行う方法は複数ありそれぞれの特徴を把握して最適なものを選択しなければならない.time time関数を用いる場合は秒単位の精度でしか測定されない. またプロセスの実時間の測定を行う.#include #include int main(){ time_t t1,t2; t…

Ubuntuコンソール文字化け

Ubuntuをインストールするとコンソールが文字化けしていることへの対策以下の内容をホームディレクトリの.bashrcへ追加case $TERM in linux) LANG=C ;; esac

プロセスの使用リソース情報を得る

getrusage関数を用いればプロセスの現在のリソース情報をrusage構造体として取得することができる.rusage構造体は以下のように定義されているstruct rusage { struct timeval ru_utime; /* user time used */ struct timeval ru_stime; /* system time used …

GMP(GNU Multi-Precision)のインストール

任意精度数演算ライブラリの1つであるGMPのインストール手順1.GMPソースコードの入手(http://gmplib.org/)2.展開からインストール %tar zxvf gmp-5.0.2.tar.gz %cd gmp-5.0.2 %configure --enable-cxx /*今回はC++のサポートも追加*/ %sudo make %sudo check…