BOOK::ふつうのLinuxプログラミングを読んだので簡単なメモ

ふつうのLinuxプログラミングを読んだので簡単なメモ

事前に読んでる本

  • はじめて読む486
  • はじめて読む8086

標準出力・標準エラー

  • 0 = STDIN_FILENO  :標準入力、デフォルトの入力元
  • 1 = STDOUT_FILENO :標準出力、デフォルトの出力先
  • 2 = STDERR_FILENO :標準エラー出力、人間向けのメッセージ出力先

何故出力とエラーで分かれているのか
  = エラーが発生してしまった場合に同一の出力先だと気付かない場合がある為

ストリームとは

  • ストリームからバイト列を読み込むread
  • ストリームからバイト列を書き込むwrite
  • ストリームをつくるopen
  • ストリームを閉じるclose

この4つが基本にある

ストリームを管理しているのはカーネル
プログラムはカーネルが管理しているストリームを管理している番号を利用することで
プログラム <-> カーネル <-> ストリーム
という流れでデータが流れている。

イメージとしてはマトリックスの文字が流れてる映像とか
渓流とかそんな感じ。データの中を泳ぐイメージ。

基本的なプロセスAPI

  • fork(2) = 分身をつくる
  • exec(2) = 自身を新しいプログラムで上書きする
  • wait(2) = fork()した子プロセスの終了を待つ

他のAPI

--- dup2(2) ---


"int dup2(int oldfd, int newfd);"

open(fd);
...
close(fd);
dup2(fd,1);
/ fdの内容を標準出力へ渡す的な /
close(0)

とか書いてきたんだけど、結局こうやって各目的毎にAPIがあって
それに対して引数とかを与えて相互関係を保持しつつ処理を行うってのは
プログラムの根底なんだと思うんだけど、CPUとかの動きがなんとなくわかっても
結局ネットワーク、特に難解なTCP/IPとメモリのページング機構を理解しない限り
全体像は見えない。

ただこの本を読むと、Linuxの基礎的な動きがなんとなくわかるので
Linuxを使った仕事をしているんだけど、プログラムってどうやって動いているんだろうとか
ちょっと色んなプログラムのソースコードを読んでみよう。とか
ext3とxfsの違いって実際はどんなんだろう。とか

色々知識を深めていく為の入り口としての技術書としては、
なによりもとてもわかりやすく、最適な本だと思います。