by shigemk2

当面は技術的なことしか書かない

2013-04-29から1日間の記事一覧

CoW

Copy on Writeの略。 CoWは書き込みが必要になるまでメモリを実際にコピーするのを遅らせる技術である。 fork(2)したとき、親プロセスの完全なコピーを生み出すが、 その都度コピーしていたらすぐオーバーヘッドになるから、この技術が採用されている。ただ…

孤児プロセス

たとえばこのようなrubyプログラムを実行する。 fork do 5.times do sleep 1 puts "I am an orphan!" end end abort "Parent process died..." 親プロセスはこのプログラムの実行によってすぐ死ぬが、 子プロセスはまだ生きており、STDOUTが上書きされてしま…

プロセスは子プロセスを作れる

fork(2)して子プロセスを作成できるお。 実行中のプロセスをコピーして新しいプロセスを作成できるのだ。 子プロセスは親プロセスのメモリのコピーであるため、 親プロセスが開いているファイルディスクリプタも同様に引き継ぐ。 というか、同じプロセスを参…

プロセスには名前がある

$PROGRAM_NAMEには実行中のプロセス名が格納されている。 この$PROGRAM_NAMEは、後から別の値を格納できる。つまり、プロセス名を変更出来るのだ。 irb(main):013:0> 10.downto(1) do |num| irb(main):014:1* $PROGRAM_NAME = "Process: #{num}" irb(main):0…

プロセスには引数がある

$ cat argv.rb p ARGV $ ruby argv.rb foo bar -va ["foo", "bar", "-va"]引数は、arrayと同じ扱いである。 それゆえ、要素の追加削除や要素の内容の変更も可能だ。ARGVが最もよく使われるのは、プログラムにファイル名を渡した場合である

第5回ゆるゆに チェスアプリを改造してみた #yry2

ゆるゆに~ゆるいUNIX勉強会~ #5 Twitter Bootstrapを使って(第2期を期待しつつ)GJ部風チェスアプリを作ってみる。 on Zusaar今日はゆるゆにへ行ってみた。「Twitter Bootstrapを使って(第2期を期待しつつ)GJ部風チェスアプリを作ってみる」というお題の下…

プロセスには環境変数がある

プロセスで使えるデータを環境変数として保持している。 環境変数はキーとバリューが対になっているから、 なんだかrubyでいうところのhashのような感じに見えるが、 実際はhashオブジェクトではなく ENV.has_keyは出来てもHashと全く同じ機能は揃えていない…

プロセスにはリソースの制限がある 2

1プロセスあたり最大でどのくらいのファイルディスクリプタが持てるかを調べるときは、 Process.getrlimit(:NOFILE)を使う。なお、この:NOFILEってシンボルは、1.8.7だとエラーになってしまった。 irb(main):001:0> p Process.getrlimit(:NOFILE) [2560, 922…

対話によるCommon Lisp入門 45 case

condはちょっと煩雑なのでswitch (defun color (fruit) (case fruit ((apple) 'red) ((banana lemon) 'yellow) ((peach) 'pink) (otherwise "I don't know."))) (print (color 'lemon)) (print (color 'banana)) (print (color 'peach)) YELLOW YELLOW PINK