879 :
nobodyさん:
$tmp = `/usr/bin/whois -h $server $name.$domain |grep -i '$msg'`;
このような処理で万が一タイムアウトになった場合、次の処理に移り
たいのですが、実行しっぱなしになってしまいます。
通常どういった処理を行うのが良いのでしょうか。
>>849>>850 ありがとうございました。
ただ私の環境はActivePerl-5.6.1.635なので
どうもできないようです。(forkできないから?)
execも引数を2個使うとなぜか機能しません。
○exec "コマンド 引数"
×exec "コマンド","引数"
もうさっぱりわかりません。
open FOO,"コマンド 引数|"
これだとFOOに結果が格納されたんですが
引数が外部の場合危ないですよね。
恥ずかしい話だが。。。
漏れって「引数」をずっと「いんすう」って読んでたよ。
882 :
845:03/03/15 19:28 ID:???
>>879 alarmでどうよ。
>>880 > 引数が外部の場合危ないですよね。
だから「チェックをしっかり」と書いてるんだけど…。
"$cmd $arg"と書かずに$cmd,@argと書いた意図を汲んでほしいな。
そもそも使いたいコマンドは何?引数はそんなに複雑なの?
引数が2つ以上のexecは引数が1つの時と挙動が変わるし、
第一システムコール使う関数は9x系とNT系で実装具合が違う。
駱駝本なりperldoc -f execなり読んでね。
>881
私も昔そう呼んでたよ。気にするな。
>>881 98SEが出るあたりまでずっとそう呼んでたよ。
>>880 汚染チェックだけしっかりやっとけ
>>882 $cmd,@argでも' 'でjoinしている時点で
意図を汲みようがないと思われ
>>879 $SIG{'ALRM'} = sub{ die 'timeout' };
eval{
alarm($timeout); # $timeout秒
$tmp = `/usr/bin/whois -h $server $name.$domain |grep -i '$msg'`;
alarm(0);
};
if ($@){
alarm(0);
($@ =~ /timeout/) or die;
# timeout!
}
# windowsではalarmが使えません。
>>880 windowsでは "-|"が使えません。