2008-04-01から1ヶ月間の記事一覧

初期化と代入

自動変数に初期値が与えられていない場合、静的変数とは異なりゼロクリアされない。例えば以下の例の場合、str1とstr2の代入は等価であるように思えるが、実際には異なる。 char str1[10] = "abc"; char str2[10]; str2[0] = 'a'; str2[1] = 'b'; str2[2] = …

コプロセス

UNIXのフィルターとは、標準入力から読み標準出力へ書くプログラムのことである。例えば、catコマンドは標準入力から読み込んだ文字列を標準出力へ書き出すので、フィルターといえる。フィルターは普通、シェルのパイプラインで直列に接続される。それに対し…

popen()を使用したプログラムの例

他プロセスの出力を呼んだり、他プロセスへの入力を書いたりする為に他プロセスへのパイプを作成する操作が多い為、標準入出力ライブラリにはpopen()及びpclese()が用意されている。これらの関数は以下の処理を行う。 パイプを作成する 子をforkする 未使用…

pipe()を使用したプログラムの例

引数として与えられたファイルの内容をページャに渡して表示する。 #include #include "ourhdr.h" #define DEF_PAFER "/usr/bin/less" int main(int argc, char *argv[]) { int n, fd[2]; pid_t pid; char line[MAXLINE]; char *pager; char *argv0; FILE *f…

パイプ

パイプ(pipe)はUNIXの最も古いIPC(プロセス間通信)であり、全てのUNIXシステムで使用できる。パイプには2つの制約がある。 半二重である。データは一方向にしか流れない。 共通の祖先を持つプロセス間でのみ使用できる。普通、パイプを作ったプロセスがfork…

OOPの三大要素1 - クラス クラスとは、「まとめて、隠して、たくさん作る」仕組み。 サブルーチンと変数を「まとめる」。結びつきの強いサブルーチンとグローバル変数をまとめることが出来る。 クラス内部だけで使う変数やサブルーチンを「隠す」。グローバ…