|
>>3126 bebe 最近の *BSD find や GNU find なら -iname とか -iregex とか。 そうでない find なら広めにひっかけて grep で絞りましょう。 |
|
>>3127 68user findコマンドで引っ掛けられたらいいかと思ったのですが、 やっぱり広めに検索をかけて、grep等で絞り込むしかなさそ ですね。 参考になりました。 有り難うございます。 |
|
始めまして、いつもこちらでは陰ながら勉強させていtだいてます。 perlスクリプトのことでお教えください ただ今企画中のスクリプトにおいて 外部コマンド実行時、そのコマンドプロセスの標準入力へ有る意味大量のデータ(文字列)を渡したいのです しかしこの方法が全く頭に浮かばず情け無い状態であります! PIPEやファイルシステムの基礎を知らない私にご教授下されば幸いです。 |
|
>>3129 もも open(OUT, "| command"); print OUT "HOGEHOGEHOGEHOGEHOGEHOGEHOGE...."; close(OUT); ってことですか? じゃなくて command の標準入力に渡しつつ、そのコマンドの 出力を受け取りたいなら IPC::Open2 などを使えばできます。 できますが、デッドロック回避などが面倒なので open(OUT, "| command > file"); print OUT "HOGEHOGEHOGEHOGEHOGEHOGEHOGE...."; close(OUT); open(IN, "< file"); while (<IN>){ .... } でいーんではと思う軟弱な私。 |
|
>>3139 金床 68user様なるほど理解しました前者が出来ればいいのです! 早速試してみます。ありがとうございました! |
|
親プロセスが複数の子プロセスを生成します。 親は子プロセスの終了をシグナル(SIGCHLD)ハンドラで検知し、waitで子プロセスの終了コード(exitの引数)を取得しています。 同時に、子プロセス数を減算します。(forkで子プロセス数を加算しています。) シグナルハンドラの処理中に、別の子プロセスが終了した場合、SIGCHLDが無視されてしまう。 あるいは、ほぼ同時に複数の子プロセスが終了した場合には、1回しかSIGCHLDのシグナルが発生しないとの記述を見た事があるのですが、正しく全ての子プロセスの終了を検知する方法はありますでしょうか。 以前、頂いたNo. 2988で頂いた以下の方法でこのような懸念が解消されますでしょうか。 SIGCHLDのシグナルハンドラ-------------------------- int pid,status,code; while((pid=waitpid(-1,&status,WNOHANG))>0){ if(WIFEXITED(status)){ code = WEXITSTATUS(status); } } -------------------------------------------------- また、waitpidがシグナルに割り込まれるとエラーになり、errnoにEINTRが設定されると思うのですが、WNOHANGを設定していた場合にはそのような事は無いと考えてしまって良いでしょうか。 よろしくお願いします。 |