struct と宣言すると変数宣言のときに struct struct_name variable_name という形で書かないといけない。たとえば以下のような感じ。 #include <stdio.h> # […]
タグ: C言語
関数の引数の void
引数を取らないことを表明するために func_name(void) と書くのと func_name() と書くのは何が違うのか。違いを観察してみる。 何もかかないとき 次のようなコードをコンパイルすると通ってしまう。 # […]
C 言語のダイグラフ
C 言語にはダイグラフとよばれる環境により存在しない記号の代替となる記法を提供している。2文字のトークンで6種類ある。 <: => [ :> => ] <% => { %> => } %: => […]
ping コマンドを実装する (1)
ping コマンドを実装したことがなかったのでやっただけの記録です。 実際には「ソースコードで体感するネットワークの仕組み」という本のファーストステップとして仮想 IP ホストの実装があるのですが、その前に ping ク […]
Hello, World カーネルモジュール
超技術書典で買った LINUX カーネルモジュール自作入門 を参考にしつつ、自作カーネルモジュールの Hello, World までをやってみました。参考書籍として Linux カーネル Hacks なんかも参照しながら […]
ファイルを open したまま各種システムコールを呼び出すとどうなるか
会社にて、インフラ屋さんからアプリケーション屋さんまでわりと多分野の数人が集まって「ふつうの Linux プログラミング」という本を輪読しています。各章、それぞれのメンバーが知っていることと知らないことがうまくばらけて […]
プロセスはどのようにスケジューリングされるのか
Linux のしくみの プロセススケジューラの章の内容、まあそうですよね…と思いつつ実際に手元マシンで実験してみたことはなかったのでやってみました。ついでに、たまたま気が向いたので結果をグラフ化してまとめてお […]
GNU-Coreutils touch コマンドの実装を読む
基本的に utime(2) を使えば良さそうなので、実装が楽そうだし、自分で書いて見つつ、GNU-Coreutils の実装を眺めてみるかなという気持ちになったので挑戦。utime(2) は次のようなインターフェースを […]
gdb を使ったデバッグ
「ふつうの Linux プログラミング」というほんでバグがある C のコード bug_head.c のデバッグ作業をするときに gdb というツールが紹介されていた デバッグ時に gdb が役に立つので、ひとまずその流れ […]