PR:この記事にはアフィリエイトリンクが含まれます。
LinuxでCを書くと、ファイルを読む、プロセスを起動する、別のプログラムと通信する場面でシステムコールが登場します。POSIX APIも学ぶと、OSの機能を使うコードが読みやすくなります。
関数名を覚えるだけでは足りません。戻り値やエラー処理を確かめて初めて、コードの意図が見えてきます。実例や演習のある本なら、手を動かしながら理解できますよ。
紹介するのは、Linuxシステムプログラミングを学べる4冊です。参考価格は税込の目安で、実売価格は時期や販売店によって変わります。
4冊の早見表
| 書籍 | 主な内容 | 参考価格(税込) | 読者像 |
|---|---|---|---|
Linuxプログラミングインタフェース | Linux API、POSIX、ファイルI/O、プロセス、IPC、スレッド、ソケット | 8,360円 | 幅広く学び、あとから参照したい人 |
Linuxシステムプログラミング | ファイルI/O、プロセス、シグナル、メモリ管理 | 3,960円 | Linux上での実践を学びたい人 |
例解UNIX/Linuxプログラミング教室 | Cによるシステムコール、演習、サンプルコード | 4,070円 | Cの基礎を終えて演習したい人 |
システムプログラミング入門 | UNIXシステムコール、IPC、スレッド、章末問題 | 2,420円 | 入門から手を動かしたい人 |
システムコールの役割
システムコールは、アプリケーションがOSの機能を使うための窓口です。ファイルを開く、プロセスを作る、メモリを扱うといった処理で、アプリケーションとカーネルをつなぎます。
Cのソースにある関数が、すべてカーネルへの直接の呼び出しとは限りません。Cライブラリの関数が内部でシステムコールを呼ぶこともあります。この関係を意識すると、挙動やエラーを追いやすくなります。
ファイルを読み込む際、要求した長さに届かない場合もあります。戻り値を確かめ、成功時も失敗時も適切に扱うこと。地味ですが、実用的なプログラムに欠かせない基本です。
Kerriskの大著
『Linuxプログラミングインタフェース』はMichael Kerrisk著、千住治郎訳。オライリー・ジャパンから2012年12月に発行されました。Linux APIを中心に、POSIX.1-2001やPOSIX.1-2008も扱います。
ファイルI/Oに加え、プロセス、シグナル、IPCと同期、スレッド、ソケットまで幅広く扱います。特定の関数を説明する入門書というより、システムプログラミング全体を体系立てて学びたい人におすすめです。
サンプルプログラムと章末演習があり、コードを動かして理解を確かめられます。APIの説明を、実際のプログラムの動きと結びつけて学べる構成ですね。対象読者はLinuxのシステムプログラマやアプリケーションプログラマです。
参考価格は税込8,360円で、4冊の中では最も高め。それでもPOSIXやLinux APIを幅広く学び、手元で参照したいなら第一候補です。ファイル処理からスレッド、ソケットまで調べたい人にすすめます。
Loveの実践書
『Linuxシステムプログラミング』はRobert Love著、千住治郎訳。オライリー・ジャパンから2008年4月に発行され、Linuxカーネル2.6に対応しています。ファイルI/O、バッファリング、メモリマッピング、システムコールなどが主なテーマです。
プロセス管理やファイルとディレクトリ、シグナル、メモリ管理、時刻も扱います。Linux上でCライブラリやシステムコールを使う実践を学びたい人におすすめです。
参考価格は税込3,960円。広範なAPIを調べる資料より、ファイルやプロセスなど具体的な機能を学ぶ一冊を探している人に合います。実売価格は時期や店によって変わります。
カーネル2.6対応という位置づけを踏まえ、基本を学ぶ実践書として読むとよいでしょう。新しいAPIまで広く調べるときは、最新のmanページや別の資料も併用してください。
例解の演習書
『例解UNIX/Linuxプログラミング教室 システムコールを使いこなすための12講』は、冨永和人・権藤克彦著、オーム社刊です。C言語の基本を学んだあと、システムプログラミングへ進みたい人にすすめます。
低水準・標準入出力から始まり、プロセスやファイルシステム、パイプ、ソケット、シグナル、端末へと範囲が広がります。サンプルコードと演習問題に加え、ダウンロードできるソースコードもあります。
2018年4月発行、512頁。参考価格は税込4,070円です。本文を読むだけでなく、コードを動かしたり変更したりして、処理の流れを確かめたい人にうれしい構成でしょう。
版元掲載の主要目次には、スレッドの専用章がありません。ファイルやプロセス、通信を12講で学ぶ演習書です。Cの基本を終えた学生や、実務に向けて練習したい人におすすめします。
入門の演習書
『システムプログラミング入門』は渡辺知恵美著、サイエンス社刊。2011年4月発行の224頁で、UNIXシステムコールを演習で学ぶ入門書です。C言語の復習やエラー処理から始められます。
ファイルI/O、プロセス、exec、シグナルのほか、パイプ、共有メモリ、セマフォ、ソケットも扱います。スレッドとmutexも範囲に含まれ、複数のプロセス間通信や並行処理の基礎を学べます。
各章末に問題があり、手を動かして理解を確かめられるのが持ち味です。Cの基礎を終えたばかりで、システムコールを一つずつ試したい人にも取り組みやすいでしょう。
参考価格は税込2,420円で、4冊の中では最も手頃です。システムコールの基本を演習で学ぶ初めての一冊としてすすめられます。
結論
POSIXやLinux APIを広く学び、あとから参照できる本が欲しいなら『Linuxプログラミングインタフェース』を選んでください。価格は高めですが、ファイルI/Oからスレッド、ソケットまで扱う範囲の広さが魅力です。
Cの基礎を終えて演習に進むなら『例解UNIX/Linuxプログラミング教室』、入門と価格の手頃さを重視するなら『システムプログラミング入門』がおすすめです。Linux上での実践を学ぶ本なら『Linuxシステムプログラミング』が合います。
4冊の参考価格は税込2,420円から8,360円まで。実売は時期や販売店で変わるため、購入時には価格も確認してください。学びたいテーマに合う一冊から始めると、CでOSの機能を扱う学習を進められます。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。





