タグ

ブックマーク / odz.hatenablog.com (4)

  • パイプ - odz buffer

    Unix(or its variants)のシェルがどうやってるのかは知らないけど (少し前に Artonさんのところで何か見たような記憶はあるが)、 Windowsの場合は大まかに コンソール プロセスを生成して標準ハンドルをリダイレクトする方法 にあるように 入力用、出力用の二つの無名パイプを作る(CreatePipe) → それぞれを起動する子プロセスのための 標準入力、標準出力および標準エラー出力用のハンドルににDuplicateHandle → 得られたリダイレクト用のハンドルを用いて CreateProcess という手順になるので、 複数段のパイプの尻尾から順番にこのハンドルの複写手順を取りながら 必要なプロセスを起動していくのではなかろうかと。 んー cmdline.split('\|').each{|prc| ほげほげ} て感じ? おー、UNIX も Windows もあ

    パイプ - odz buffer
    yabu_kyu
    yabu_kyu 2007/07/15
  • プロセスが開いているファイルを確認する - odz buffer

    Linux であるプロセスが開いているファイルを確認する Tips。 ls -l /proc/`pgrep -n java`/fd"pgrep -n java" の ところは用途に応じて "pgrep -nf foge.py" とか適当に。Linux に限らず procfs がサポートされている OS ならいけるような気がする。 と思ったら、Solaris は symblic link じゃないのかな。fd 以下のファイルは読めるけどどこへの link か分からない。

    プロセスが開いているファイルを確認する - odz buffer
    yabu_kyu
    yabu_kyu 2007/02/16
  • Text File / Line - odz buffer

    コメントから Unix においてテキストファイルとは行の集合であり、行とは改行文字で終わるものと定義される、とどこかで読んだ記憶があります。 ふむ。きむらさんのところから(関係ないけどエントリに対する Permalink がおかしい。日付についているリンクはいいんだけど) 今、再度調べてみたけど見つからなかったんですが、 POSIX的には「テキストファイル」の定義ってのは決まってまして、 それによると各行の末尾は必ず改行を含むことになっています。 ですから、「テキストファイル」を扱うと謳っているユーティリティが ファイル末尾に改行を含まないファイルに対して文句つけても、 POSIX的には間違ってないです。 あと行の長さとして最低限これだけの長さは許容しなければいけないとかも あったんですけど、どこだっけなー。 あ、英語だったのは間違いないです。 POSIX だというならまんま POSIX

    Text File / Line - odz buffer
  • shell のちょっとしたテクニック - odz buffer

    後輩が cat README | tr ' ' '\n' | sort | uniq -c | sort -nr | head てなテクニックを見て、びっくりしたみたいな話をしていたのだが、こういうパイプラインを利用するテクニックを学んでいないのは色々損な気がする。 ていうか、サーバで丸一日以上かかるような処理を実行するのもしょっちゅうなのに、GNU screen も nohup も知らないってのはいろいろ支障があるような気もするのだが、だれも教えないものかなぁ。 ということで、bash or zsh のちょっとしたテクニックとか*1。リダイレクトとかパイプラインは略。 連続実行 単純に連続実行。 % foo; barfoo が正常終了したときだけ bar を実行 % foo && barfoo が正常終了しなかったときだけ bar を実行 % foo || bar&&、||は来は論理演

    shell のちょっとしたテクニック - odz buffer
  • 1