タグ

ブックマーク / blog.livedoor.jp/kurt0027 (5)

  • hollyなblog:wait3のメモ

    Proc::Wait3のwait3を使っているところを ※はじめのほうでuse POSIX qw(:sys_wait_h);としておくmy $option = !defined $pid ? 0 : &WNOHANG; if (my $exit_pid = waitpid -1, $option) { delete $worker_pids{$exit_pid}; }waitpidに変えてみて、このスクリプトを実行し、親プロセスに対してkill -TERM $pidなどとすると確かに制御が返ってこない(正確には子プロセスが終了するまで待ち状態になるようだ)。当にpreforkなデーモンの実装にしてしまうとたしかにwait3を使わないと致命的っぽい。 ということでwait3。存在を知っていた程度でforkする時はwait or waitpidしか使ってなかったが、なかなか有用だ。wait4

  • hollyなblog:2010-09-23の技術こねた

    またこねた。 Copy on Writeで共有してるメモリ使用量を調べる。例によってお気軽にshellで。perlでいうとLinux::Smapsとかインストールされていない場合。こういうのがちょっと必要になったので。 こことかみれば詳細が書かれているので、Copy on Writeがそもそも何なのかまではかかない。 cat smaps.sh #!/bin/sh echo -e "PID\tVSZ\tRSS\tShared" for pid in $@; do smaps="/proc/$pid/smaps" vsz=$(grep -E "^Size" $smaps | awk 'BEGIN{ num = 0 } { num += $2 } END{ print num }') rss=$(grep -E "^Rss" $smaps | awk 'BEGIN{ num = 0 } { nu

  • hollyなblog:perlxs入門その8

    もうひとつ書き忘れたので。最近はModule::Installをperlモジュールのパッケージに配布物として一緒にはいっていることが普通になってきているが、XSモジュールをModule::Installでインストールできるようにするには、Makefile.PLを use inc::Module::Install; name 'Hoge'; all_from 'lib/Hoge.pm'; can_cc or die "This module requires a C compiler"; makemaker_args( OBJECT => '$(O_FILES)', clean => { FILES => q{ *.stackdump *.gcov *.gcda *.gcno *.out nytprof cover_db }, }, CC    => 'g++', LD    => 'g++

  • hollyなblog:perlxs入門その7

    ひさびさにXSねたでも書こう。perlxs入門その6が去年の2月くらいのねたなので、かれこれ1年ぶりだ。 XSをc++で書こうとした場合にはまったので、そのときの対処法。 iostreamを使おうとするとコンパイルが通らなくなる問題は知っていたけど(→参照 http://d.hatena.ne.jp/antipop/20081222/1229876529)、ちょっと別の問題も発生したもので。 でとあるXSモジュールをコンパイルしようとしてcp lib/Hoge.pm blib/lib/Hoge.pm /usr/bin/perl "-Iinc" /usr/lib/perl5/vendor_perl/5.8.8/ExtUtils/xsubpp -C++ -typemap /usr/lib/perl5/5.8.8/ExtUtils/typemap Hoge.xs > Hoge.xsc && mv

  • hollyなblog:シグナルハンドラ

  • 1