タグ

selectとPerlに関するbabydaemonsのブックマーク (3)

  • perl には2種類の select がある - kameidの備忘録 - Sharpen the Saw!

    詳しくは、 % perldoc -f select 一個目の select は、デフォルトの出力ファイルハンドルを変更するもの。 select MYOUT; print "Hi! My name is Kameid.\n"; select STDOUT; # 標準出力に出力ファイルハンドルを戻す 上記の print は標準出力ではなくて、MYOUT に出力される。まあ、あんま使わない方が良さそうだ。 もう一つの select は「4引数の select」と言うらしい。これは select(2) システムコールを呼ぶもの。良く使われるのは msec 単位での sleep の代用品としてだろう。1秒以下の sleep をしたい場合、 select(undef, undef, undef, 0.25); # sleep 0.25 と書いてもダメ。 とすることが出来る。 ただしこの用途には、Tim

    perl には2種類の select がある - kameidの備忘録 - Sharpen the Saw!
    babydaemons
    babydaemons 2010/08/26
    socket(2)が"n引数のselect"って呼ばれるんだけど、nが思い出せなかった。orz #答え:n == 4
  • Perlでタイムアウト付きIOアクセスをするには

    [上に] [前に] [次に] Cz 1999/08/05(木) 21:00:42 Windows環境でのPerlでタイムアウト付きIOアクセスをする方法はないものでしょうか?。 たとえば、socketで、5秒のタイムアウト付きReadinをして、 メッセージがなければタイムアウトして他の処理へ、といった処理を、 fork無しでやりたいのですが。 ついでといってはなんですが、もう一つ。 windowsのtelnetTeraTermで、telnet以外のポートを 叩いたときに、コネクトはするのですが、メッセージ表示も、 入力も受けつけなくなるのはどうしたら良いのでしょうか?。 Unixのtelnetからだと問題無いのですが・・・。 Cz 1999/08/05(木) 21:08:33 追加です。 具体的には、コンソール入力と、ソケットからのメッセージを、 fork無しでタイムシェアリングしなが

  • おさかなラボ - [Perl]バッファのFlushを1行で安全に

    デフォルトのファイルハンドル(多くの場合STDOUT)のバッファをflush(バッファを強制出力)するのは$| = 1;として、print "";すればいいのだが、現在デフォルトのファイルハンドルとは違うファイルハンドルをflushしたい場合、select($file_handle);としてから$| = 1としなければならない。$|は元々何だったかも覚えておかないといけない。selectする前のファイルハンドルも元に戻さないといけない。実はいろいろすることがある。そのために取っておいた変数は掃除しないといけない。とするとコードはこうなる。 { my $old_fh = select($fh); my $old_dolcol = $|; $| = 1; print ""; $| = $old_dolcol; select($old_fh); } これを1行でかくとこうなる。

  • 1