unix

親プロセスは2度死ぬ - デーモン化に使うダブルforkの謎

デーモンプロセスを作る場合には,教科書によく書かれている2度forkは不要ではないか? ということを以前の記事に書いた. [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - 睡眠不足?! 確かにBSDのdaemon(3) のコードでは,forkは…

ファイル名の交換コマンド: mvswap

最近,シェル上でファイル名を交換することが多くなってきた.こんなコマンドをよく打つ. % mv hoge hoge.tmp % mv fuga hoge % mv hoge.tmp fuga指が疲れるし,誤って操作をする確率も高くなる. そこでこんなシェルスクリプトを書いて,~/binにぶちこんで…

UNIXネットワークプログラミングのお勉強 (3) PF_UNIX vs. PF_INET

そういえば一か月前はネットワークプログラミングを勉強していたことを思い出した.案の定,すべてを忘れていたのでもう一度復習. マシン内の通信の場合,TCP通信 (PF_INET) 以外にファイルを介したソケット通信 (PF_UNIX) という選択肢がある.どれくらい…

ブロードバンドルータのポート転送による外部から自宅マシンへのアクセス

そりゃできるよね.今まで全く気がつきませんでした...今回はsshを設定. ルータの設定 基本的に全てブラウザから設定可能だった.超便利.planex製のルータだったけれど,他社製の設定方法の情報も参考になった.こんな手順で設定. サーバマシンに固定…

UNIXネットワークプログラミングのお勉強 (1)

3連休何をしようかと考えていたら,なんとなくデーモンプログラムを書いてみたくなったので,Cによるネットワークプログラミングを勉強することにした. 2年くらい前に文献[1]を購入し,過去に2回ほど勉強しようと思ったけれど,とにかくインクルードする必…

mkdirの-pオプション

知らなかった...パスに含まれるディレクトリが存在しなかったら,つくってくれるオプション.pの意味はparentsらしい. % mkdir ./hoge/bar mkdir: hoge: No such file or directory % mkdir -p ./hoge/bar % tree hoge hoge `-- bar 1 directory, 0 files…

大きなデータをソートする - merge sort by sort

諸事情により,メモリに入りきらない大きなデータをソートする必要が出てきた. 当然勉強したばかりのマージソートを実装しようと思ったのだが,思いのほか面倒くさそうなので,既存のUnixコマンドにはマージソートが実装されていないのかを調べてみた. ・…

timeでコマンドの実行時間を測定する

プログラムの実行時間を測定するコマンドを調べていたらやはりtimeコマンドに行き着く. しかし,ネット上では完全な解説が見つからなかったのできちんと調べることにした. Usage: time command以下,実行例 % time cc -c myprogram.c 0.600u 0.704s 0:03.7…

findとgrepを使う

普段からfind, grepを使っていないので、いざ使おうとすると使えない % grep printf ./*.c # カレントディレクトリの.cファイルの中からprintfを含む行を検索 % find ./ -name "*.c" # カレントディレクトリから.cファイルを検索 もちろん他にも細かいコマン…