Unix/Linuxプログラミング理論と実践 2章(whoを書く)

whoを書く(macbook)

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

macだと

  • utmpではなくてutmpxを
  • 時刻がut_tv.tv_sec

あと以下の関数のcp+4は先頭の文字列4つを落としている。

void show_time(long timeval){
  char *cp;
  cp = ctime(&timeval);
  printf("%12.12s", cp+4);
}

作ったwho2は月の表記がオリジナルとちょっと違うけどまぁいいか。

$ ./who2
kzfm     console  Sep 27 17:31
kzfm     ttys000  Sep 27 17:32
kzfm     ttys001  Sep 27 18:50
kzfm     ttys002  Sep 27 18:50
$ who
kzfm     console   9 27 17:31  
kzfm     ttys000   9 27 17:32  
kzfm     ttys001   9 27 18:50  
kzfm     ttys002   9 27 18:50  

pythonからutmpx(utmp)ファイルにアクセスするにはpyutmpってのがあってCythonで書かれている。

他にもunagi.pyをみるとstructモジュールを使ってアクセスできるようだ。

Unix/Linuxプログラミング理論と実践 1章

moreっぽいコマンドの実装。あとは導入っぽい章

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

  • あるコマンドは何をするのか
  • そのコマンドはどんな仕組みなのか
  • そのコマンドは自分で実装できるか

という感じで問いから始まり理解をしながら実装してみることを通して悟りをひらいていく感じの流れの本っぽい。

Let's note R4にUbuntuをインストール

macbookにpowerpoint(プレゼン用)入れたら、Let's note R4がWindowsである必要はなくなってしまったので、Ubuntuでも入れるかと。

UNetbootinを使うとisoイメージをusbメモリからインストールできるんだが、これが超らくちんで、あっさりインストール完了。

無線LANの認識もスムース。

1250923774

あとはemobile使えるんだったら、持ち歩きはこれでいいや。

mimetex入れた

数式を書く時にめんどいので、はてなにならってmimetexを入れてみた。

慣れれば楽なのかな。

実用SSHを買った

分厚い

ProductName 実用SSH 第2版―セキュアシェル徹底活用ガイド
Daniel J. Barrett,Richard E. Silverman,Robert G. Byrnes
オライリー・ジャパン / ¥ 5,040 ()
在庫あり。

yum-complete-transaction

fedoraをアップグレードしたら

There are unfinished transactions remaining. \
You might consider running yum-complete-transaction first to finish them

というwarningsが出るようになった。

こういう場合はyum-utilsのyum-complete-transactionコマンドを使う

LPI試験 レベル1

図書館に行ったら置いてあったので、借りて読んでみた。

ProductName LPI試験 レベル1 標準教科書 (なるほどナットク!)
末永 貴一
オーム社 / ¥ 2,940 ()
在庫あり。

  • man以外
    • apropos,whatis
  • tee
    • 標準出力を二分岐
  • expand,unexpand
    • tab文字を展開
  • pwconv
  • anacron
    • /var/spool/anacron/にタイムスタンプファイルがある
  • at
    • 指定した時間に一度だけコマンドを実行
  • netstat -l
    • 接続待ち状態のソケットのみを表示

インターフェイスの街角

今読んで、全然古くさくないってのが凄いよな。

dmacro.elは素晴らしい。インターフェースは重要。

詳解 LinuxカーネルとLinuxカーネル2.6解読室はどっちを読むべき?

買うとしたらどっちなのかなぁ。

ProductName 詳解 Linuxカーネル 第3版
Daniel P. Bovet,Marco Cesati
オライリー・ジャパン / ¥ 6,930 ()
在庫あり。

ProductName Linuxカーネル2.6解読室
高橋浩和,小田逸郎,山幡為佐久
ソフトバンククリエイティブ / ¥ 5,670 ()
在庫あり。

名前付きパイプ

pは名前付きパイプらしい。mkfifoコマンドで作成できる。

$ mkfifo test
$ ll
合計 0
prw-r--r-- 1 kzfm kzfm 0 2009-02-17 19:49 test

パイプがいっぱいの時には書き手側がブロックされ、パイプが空の場合には読み手側がブロックされる。

書き手側

for my $i (0..3) {
  open my $fh, ">", "test";
  print $fh "test-$i";
  close $fh;
  sleep 1;
}

読み手側

while (1) {
  open my $fh, "<", "test";
  while(<$fh>){ print "Got: $_\n";}
  close $fh;
  sleep 3;
}

とやると読み手側で待たされて10秒くらいかかって終わる。

$ time perl testwrite.pl
perl testwrite.pl  0.00s user 0.00s system 0% cpu 10.004 total

POSIXにmkfifoもあった。

このzshの記事も面白そう