「Linuxシステムプログラミング」というのをご存知ですか?
Linuxで低レイヤーでプログラムするとき、どうしてもシステムコールと仲良くする必要がでてきます。
本記事では、Linuxにおけるシステムコールの使い方における本を2冊紹介します。
- 入門書 Linuxシステムプログラミング
- バイブル Linuxプログラムインタフェース
Linuxシステムプログラミングとは
イト屋です。
「Linuxシステムプログラミング」は、少し前までは、単に「システムプログラミング」であったり「Unixシステムプログラミング」と言われていました。
Windowsが独自のシステムコールを強要するため、Windowsでシステムプログラミングはできません。他のUnixが衰退してしまったので、Unixごとの微差を気にする必要は現代においてはありません。
システムプログラミングとは
システムプログラミングとは「システムコールと上手に付き合う方法」のことです。
では、システムコールとは、アプリケーションがOSと会話をする手段です。Linuxを含むUnixでは、OSと会話するのはC言語と決まっています。
つまり、システムコールは「C言語の関数のある集まりのこと」です。
したがって、システムプログラミングは「CまたはC++でOSとやりとりするための手段」ということになります。
以下の2冊を紹介します。
- 入門書 Linuxシステムプログラミング
- バイブル Linuxプログラムインタフェース
入門書 Linuxシステムプログラミング
まずはこの本から入りましょう。その名もそのまま「Linuxシステムプログラミング」です。
ファイルI/O、プロセス管理、メモリ管理、シグナル、時間について詳細に解説されています。
「read()という関数が普通に一部しか読めないことがある」ため、read()ではループする必要がある、とかを丁寧に説明されています。
バイブル Linuxプログラムインタフェース
次の本がLinuxシステムプログラムを根本的に変えてしまった本です。
上記の「Linuxシステムプログラミング」みたいな入門書を読んだ後、どうやってシステムプログラミングをしていたかというと、
「やり方をGoogleで調べる」
「libcとかカーネルのコードを調べる」
などを駆使して自分で方法を模索していました。「Linuxプログラミングインタフェース」がでるまでは。
「Linuxシステムプログラミング」では全く触れられていなかった以下の項目があります。
- ソケットのプログラミング
- プロセス間通信(IPC)のやり方
- マルチスレッドプログラミングのやり方
- 拡張属性の権限の複雑な仕様
- /procファイルシステムの使い方
1604ページという持ち運びを拒否した重量です。でも、以下のように納得です。
- 他の本を読む必要がない
- 著者はmanページメンテナンスを担当しており正確で分かりやすい
- 読むだけでスキルが上がるのを実感できる
Linuxシステムプログラミングを仕事にするのであれば、「Linuxプログラミングインタフェース」を必ず買って必携書としてください。
イト屋がLinuxシステムプログラミングしているとき、職場で5冊買って、全メンバのスキルアップをはかりました。
まとめ
Linuxシステムプログラミングを紹介しました。
「Linuxプログラミングインタフェース」は必ず買いましょう。
以下、工程ごとの説明です。
>>> 【ITエンジニア】工程ごとの分類
コメント