第1章は下記のような構成になっています
- この本で学ぶことができること
- C言語開発の一通りの手順
- 情報の探し方と基礎知識について
それぞれについて、簡単にまとめます
この本で学べる内容
Linuxを構成するものやその世界を見て、Linuxに関する常識を身につけることを目的として、下記3点の概念について学びます。
- ファイルプロセス
- プロセス
- ストリーム
この3点を選んだ理由は、この3つがLinux世界を構成する重要な概念だからです。
C言語開発の一通りの手順
ここでは下記の内容について学びます
gccを使ったビルド
# -o optionでビルドされるプログラム名を指定する gcc -o ${ビルドされるプログラム名} {Cのプログラム名}
コマンドライン引数
int main (int argc, char *argv[]){ ... }
上記のプログラムにコマンドライン引数を与えて実行すると、argc, argvの値は下記のようになります。
$ ./args x y argc=3 argv[0] = ./args argv[1] = x argv[2] = y
ここで./args *
などのグロブを使って、複数の引数を一度に渡すことも可能です。
また、ダブルコーテーションを使うと、コマンドライン変数をまとめることができます。
./args "*"
も ./args "x y z"
と入力した場合、"*" や "x y z" も1つのコマンドライン引数とみなされます。
情報の探し方と基礎知識
cプログラミングで情報を集める際、manコマンドが便利です。
例えば、man strlen
とすると、下記のような出力が得られます。
STRLEN(3) BSD Library Functions Manual STRLEN(3) NAME strlen, strnlen -- find length of string LIBRARY Standard C Library (libc, -lc) SYNOPSIS #include <string.h> size_t strlen(const char *s); size_t strnlen(const char *s, size_t maxlen); ...
printfのように、コマンドや関数など、複数のセクションに同じ名前のページが存在する場合、man printf
と入力すると下記のような出力が得られます。
PRINTF(1) BSD General Commands Manual PRINTF(1) NAME printf -- formatted output SYNOPSIS printf format [arguments ...] ... SEE ALSO echo(1), printf(3)
PRINTF(1)の(1)はコマンドを示します。STRLEN(3) の (3)は関数を示します。
LinuxやUnixの世界では、この使われ方はよく出るので覚えておいて損は無いです。その他にも man png
と入力するとpngのフォーマットが出力されたりします。表にすると下記の通りです。
1: ユーザーコマンド ( man printf) 2: システムコール (次の章で説明) 3: ライブラリ関数 (`man 3 printf` or `man strlen`) 4: デバイスファイル (`man tcp`) 5: ファイルフォーマット (`man png`)
まとめ
以上、この本で学べる内容、C言語でのビルドから、コマンドの調べ方まで、Linuxの世界を学ぶために必要な道具を渡される感じの1章でした。