Unix/Linuxプログラミング理論と実践 15章 (IPCまとめ)

面白く読めた本だった。

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

  • パイプ
  • インターネットソケット
  • 名前付きソケット
  • 名前付きパイプ(FIFO)
  • ファイルロック
  • 共有メモリ
  • セマフォ
  • メッセージキュー
  • ファイル

Unix/Linuxプログラミング理論と実践 14章 (スレッド)

スレッドプログラミング(pthread)

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

12章のwebサーバをスレッドを利用するように書き換える。

Unix/Linuxプログラミング理論と実践 13章 (ライセンスサーバ)

データグラム通信を利用したライセンスサーバを書く。

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

  • sendtoとrecvfromを使う
  • kill 0 でプロセスの存在の有無がわかる
  • Unixドメインソケットを使ったプログラミング

Unix/Linuxプログラミング理論と実践 12章 (Web server)

Cでweb serverを書く

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

GETだけをサポートした簡単なものを書いた。

Unix/Linuxプログラミング理論と実践 11章 (ソケットプログラミング)

ソケット

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

socket->bind->listen->accept->read/write->close

Unix/Linuxプログラミング理論と実践 11章 (popen)

11.4 popenを書く

pipeしてforkして親の標準入力をパイプにつないで、この標準出力をパイプにつないで、execlでsh -c commandを実行する

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

shの-cオプションはコマンドを実行して終了する。

-c string If the -c option is present, then commands are read from string.  
If there are arguments after the string, they are assigned to the positional 
parameters, starting with $0.

Unix/Linuxプログラミング理論と実践 10章(pipe)

pipe,fork,execを組み合わせて二つのプロセスでパイプを共有する。

who | sort

とか。

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

Unix/Linuxプログラミング理論と実践 9章 (shをつくる)

if elseなどの制御文や変数を取り扱えるようにして、環境変数にも対応させる。

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

forkするときに環境をどう受け継がせるかとか。

Unix/Linuxプログラミング理論と実践 9章 (環境)

環境はenvironが指す配列に格納されている。

環境変数一覧を出力してみる。

#include <stdio.h>
extern char **environ;

main()
{ 
  int i;

  for( i = 0 ; environ[i] ; i++ )
    printf("%s\n",environ[i]);
}

実行結果の一部。

EDITOR=/usr/bin/vim
LANG=ja_JP.utf-8
HISTCONTROL=ignoreboth
SHLVL=1
  • ハッシュでなくて、配列にxxx=XXXみたいに格納されているのがちょっと意外だ
  • 環境変数にアクセスするには単にextern char **environでいい

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

Unix/Linuxプログラミング理論と実践 8章 (sh続き)

shを作っていく。この章から結構楽しい。

ProductName Unix/Linuxプログラミング理論と実践
Bruce Molay
アスキー・メディアワークス / ¥ 6,090 ()
在庫あり。

forkとwaitを使って子プロセスを制御する。

  • 死んだのに未回収の終了ステータスを持っているプロセスをゾンビと呼ぶ
  • execvp,execlpのpはpathから来ている