2008-07-11 「引数が大きすぎる」を回避するためのxargs
■[shell]「引数が大きすぎる」を回避するためのxargs
バイト先で、10万ファイルほど置かれたディレクトリ上で下記コマンドを実行したらエラーになりました。
$ mv * ../other_dir/ 引数が多すぎます
シェルがワイルドカードを展開した後の引数文字列が長すぎるのが原因でした。シェルがforkした後、mvをexecするところでエラーになるらしいです。
下記コマンドで回避できました。
$ find . -type f | xargs -i mv {} ../other_dir/
xargsは前から使ってたんですが{}でパイプで受け取った文字列を指定できるのは知らなかったなあ。
- 参考サイト
2008-06-27 fgetsがfgetsに見えなくなる時@PHP
■[PHP]fgetsがfgetsに見えなくなる時@PHP
外部プロセスをpopenで起動してfgetsする際、1行単位で文字列取得しなくなるコード例。単なるメモ。
PHPプロセス側をノンブロッキング設定する*1のに加えて、外部プロセス側の標準出力行バッファリングが無効になってないといけない*2。
<?php $res = popen("./a.out", "r"); stream_set_blocking($res, 0); for(;;){ $str = fgets($res); var_dump($str); sleep(1); } ?>
外部コード(code.c)、
#include <unistd.h> #include <stdio.h> int main(){ int cnt = 0; setvbuf(stdout, 0, _IONBF, 0); for(;;){ if(++cnt == 5){ cnt = 0; printf("b\n"); }else{ printf("a"); } sleep(2); } }
実行例:
$ gcc code.c $ php code.php string(1) "a" bool(false) string(1) "a" bool(false) string(1) "a" bool(false) string(1) "a" bool(false) string(2) "b " bool(false)

これヤった後でパチ屋に行ったら勝率上がりすぎwwwwww
http://shiofuki.navi-y.net/mFuHnMo/
ただの軍資金稼ぎのつもりでヤってたんだけど、
パチも負けねーもんだから金が余りまくりっす・・(^^;
まー金は余っても困らないからまだ続けるけどねーヽ( ・∀・)ノ
とりあえずBMWでも買うわwwwwwww
世間は不況で騒がしいけど、はっきり言って俺には無縁だねw
ち ん こ触らせてあげて顔にぶっかけてあげるだけで5万貰えるしw
いやー世の中チョロイっすわwwwwwww
http://dopyun.quitblue.com/dUlo4JN/
やっぱコスしてもらってハ メ るのが一番萌えに燃えるって!!!!!!
昨日はエ○ァの新キャラコスしてもらったもんねー(*´Д`)ハァハァ
興 奮しすぎて無意識に服着せたままパ ン ツ ビリビリに破いてバック突きしまくっちゃったwwww(テヘw)
既に次はハ○ヒで決定してるしwktkが止まらんねぇぇぇwwwwwwwwww
http://kachi.strowcrue.net/tBbDz04/