jFD開発したりしなかったり日誌
2006-01-12 [長年日記]
_ 爆睡
21時過ぎ家に帰り着き、1日前の乾いた米でカレーを食べ、
布団にもぐりこんだらあっという間に寝てた。
さすがに睡眠時間が3時間割ると早いわ。
午前4時くらいに目が覚めて、風呂を立ててゆっくり浸かり、
多少コードをいじってまた睡眠。
まだまだ寝足りない。
_ びいさんへ回答
昨日のRuntime.execの件。
パラメータ付きで外部コマンドを呼び出す際に、実行の形式を工夫しないと
うまく実行できないようです。
うちのLinux環境(Fedora Core4、Java 1.5.0_04-b05)で"ls -l"を
色々形式を変えて実験してみました。
1、 Runtime.getRuntime().exec("/bin/sh -c ls -l", null, dir); ls(パラメータ抜き)が実行される。 2、 Runtime.getRuntime().exec("/bin/sh -c \"ls -l\"", null, dir); エラーが表示されて実行されない。 3、 String[] strs = { "/bin/sh", "-c", "ls -l" }; Runtime.getRuntime().exec(strs, null, dir); ls -lが実行される。 4、 String[] strs = { "/bin/sh", "-c", "\"ls -l\"" }; Runtime.getRuntime().exec(strs, null, dir); エラーが出て実行されない。
_ HtmlTablePanel
少しだけバージョンアップしました。
一部コンストラクタの可視性変更(通常使わない物がpublicになっていた)と、
Javadocの整理をして抜けを埋めただけです。
ついでにJavadocもWebから見られるようにしました。
クラスは9個あるけれど、HtmlTablePanelクラスだけ見てもらえば
わかるように出来てます。
お試しあれ。
[TrackBack URL: https://starseed.ne.jp/ikemen/diary/tdiary/tb.rb/20060112]
本日のリンク元
その他のリンク元
- http://paper.jeez.jp/result/シャア専用/シャア専用 sh ×15
- https://www.google.co.jp/ ×9
- http://www.yahoogle.jp/yahoo-2-急所蹴り動画女.html ×8
- http://dream.jp/search.php?q=急所蹴り&p=40 ×6
- http://dream.jp/search.php?q=急所蹴り&p=160 ×6
- http://www.mooter.co.jp/moot/?keywords=股蹴り 動画&page... ×6
- http://erokey.ddo.jp/diary2/SM/20070901.html ×5
- http://search.nikkei.co.jp/c/t?keyword=小学生裸&site=&... ×5
- http://search.nikkei.co.jp/c/t?keyword=小学生裸&ws=1 ×5
- http://www.yahoogle.jp/yahoo-3-金玉蹴り.html ×5
- http://www.yahoogle.jp/yahoo-6-金玉蹴り.html ×4
- http://www.mooter.co.jp/moot/?keywords=股間蹴り 急所蹴り&... ×4
- http://search.nikkei.co.jp/c/t?keyword=金的画像&site=&... ×4
- http://www.yahoogle.jp/yahoo-2-金玉蹴り.html ×4
- http://www.mooter.co.jp/moot/?keywords=マン蹴り 動画&pa... ×3
- http://search.nikkei.co.jp/c/t?keyword=急所蹴り動画&site... ×3
- http://paper.jeez.jp/result/細かすぎて伝わらないモノマネ選手権/細かすぎ... ×3
- http://dream.jp/search.php?q=急所蹴り&p=80 ×3
- http://www.mooter.co.jp/moot/?keywords=金玉蹴り動画&doma... ×3
- http://www.yahoogle.jp/yahoo-1-金玉蹴り 動画.html ×3
- http://dream.jp/search.php?q=急所蹴り&p=50 ×2
- http://d.hatena.ne.jp/tomo_k/ ×2
- http://www.yahoogle.jp/yahoo-1-急所蹴り動画女.html ×2
- http://www.yahoogle.jp/yahoogle-4-金玉蹴り動画.html ×2
- http://www.mooter.co.jp/moot/?keywords=金蹴り護身術動画&pa... ×2
- http://www.mooter.co.jp/moot/?keywords=急所蹴り 女&pag... ×2
- http://pinkey.dip.jp/diary2/聖夜/芸人は聖夜も大忙しスペシャル/2007... ×1
- http://wrs.search.yahoo.co.jp/l=WS1/R=13/IPC=jp/SH... ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=女子 股... ×1
- http://a.hatena.ne.jp/gekka/?of=10 ×1
- http://dream.jp/search.php?q=S女画像 ×1
- http://dream.jp/search.php?q=急所蹴り&p=20 ×1
- http://www.starseed.ne.jp/ ×1
- http://press.eek.jp/result/beatmania/ビートマニア 無料 ×1
- http://sheepman.parfait.ne.jp/wiki/コードも書かない人に言われたく... ×1
- http://www.yahoogle.jp/yahoogle-1-女 護身術 金的 画像.html... ×1
- http://www.so-net.ne.jp/search/web/?query=股間蹴り 金的 ... ×1
- http://press.eek.jp/result/シャア専用/シャア専用 wiki ×1
- http://www.yahoogle.jp/yahoogle-7-急所蹴り.html ×1
- http://www.yahoogle.jp/yahoogle-1-金玉蹴り動画.html ×1
- http://dream.jp/search.php?q=急所蹴り 金玉 股間&p=10 ×1
- http://mobile.goo.ne.jp/search.jsp?MT=シャア専用ズゴック&DC... ×1
- http://press.eek.jp/result/電気アンマ/電気アンマ 画像 ×1
- http://www.yahoogle.jp/yahoo-2-金玉蹴り 動画.html ×1
- http://www.mooter.co.jp/moot/?keywords=女小学生裸画像&pag... ×1
- http://s.luna.tv/search.aspx?q=java runtime.exec 空... ×1
- http://a.hatena.ne.jp/nekop/ ×1
- http://dream.jp/search.php?q=急所蹴り&p=30 ×1
- http://s.luna.tv/search.aspx?client=lunascape&s=0&... ×1
- http://sagool.jp/s?pr=waccal&q=AV動画 PSP ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=小学生 男... ×1
- http://wrs.search.yahoo.co.jp/S=2114736003/K=護身術 女... ×1
- http://www.mooter.co.jp/moot/?keywords=マン蹴り 動画&lr=... ×1
- http://d.hatena.ne.jp/zz_sexy/ ×1
- http://www.yahoogle.jp/yahoo-4-金玉蹴り.html ×1
- http://www.starseed.ne.jp./ikemen/diary/tdiary/ ×1
- http://sagool.jp/s?more=1&q=site:www.starseed.ne.j... ×1
検索
- NAKEDNEWS ×30 / 金蹴り ×28 / イケメン股間攻め画像 ×21 / 小学生裸 ×18 / 細かすぎて伝わらないものまね選手権 動画 ×17 / 女子金けり護身術 ×17 / s女 画像 ×16 / 小学生のマンスジ ×15 / 急所蹴り 画像 ×15 / 小学生 マンスジ ×14 / 股間蹴り映像 ×14 / 赤外線 画像 水着 ×13 / 女護身金的攻め ×13 / nakedNEWS ×13 / 足こき ×12 / winny ノード 最新 ×12 / 急所蹴り ×12 / 細かすぎて伝わらないものまね動画 ×11 / 電気あんま 画像付き ×10 / 小学生のちんこ ×10 / 画像 女 護身術 ×10 / 男優 裸 ×9 / winny ノード ×9 / 女金的攻め ×9 / 女 急所蹴り ×9 / ギルガメッシュナイト 動画 ダウンロード ×9 / 女子プロレス 動画 ×8 / ボディビル 動画 ×8 / 電気あんま 動画 ×8 / 女空手金的攻め ×8 / 女の金玉蹴り ×8 / ギルガメッシュナイト 動画 ×8 / PSP PCエンジンエミュレーター ×8 / 女子プロレス ヌード ×8 / 女ボクシング ×8 / 動画 急所蹴り ×7 / winny ノ−ド ×7 / 女 蹴り ×7 / 金的 画像 ×7 / 細かすぎて伝わらないものまね ダウンロード ×7 / ゲイビデオ ×7 / 動画 女ボクシング ×7 / キス動画 ×7 / AV男優 ムービー ×6 / 小学生のマンスジ画像 ×6 / 無料 赤外線画像 ×6 / 金玉蹴り ×6 / 細かすぎて伝わらないものまね選手権 画像 ×6 / SMプロレス技動画 ×6 / 女子プロレスマンスジ画像 ×6 / 護身術 急所蹴り ×6 / 小学生 裸 ×6 / 動画 女子ボクシング ×6 / 女股蹴り ×6 / WINNY ノード 7 ×6 / 女護身金的 ×6 / マン蹴り ×5 / 正座画像 ×5 / 水着 白 スケスケ ×5 / ちんこ攻め 電気あんま ×5 / 金玉の蹴り方 ×5 / 細かすぎて伝わらないものまね選手権7 ×5 / av 男優 ×5 / マン蹴り 動画 ×5 / 女子小学生 写真 ×5 / 赤外線 水着 ×5 / 女子、裸 ×5 / プロレス ものまね 動画 ×5 / winny ノードリスト ×5 / 女の電気アンマ動画 ×5 / 赤外線 写真 水着 ×5 / 細かすぎて伝わらないものまね選手権 ダウンロード ×5 / グラディウス 動画 ×5 / 金玉 女 蹴り ×5 / 股間蹴り ×5 / 男優動画 ×5 / 女子ボクシング ×4 / AV 動画 ×4 / ビートマニア スーパープレイ動画 ×4 / 女ボクシング動画 ×4 / AV動画 ファイル ×4 / ゲイ動画 ×4 / マンスジ 画像 ×4 / 細かすぎて伝わらないものまね選手権 動画 8 ×4 / 脱衣動画 ×4 / 電気アンマ 動画 ×4 / nakedNEWS ×4 / winny 最新 ×4 / チンコ 画像 ×4 / プロレス 技 動画 ×4 / 電気アンマ 画像 ×4 / 女股+蹴り ×4 / 護身術 動画 ×4 / 護身 女 金的 ×4 / java runtime.exec bash ×4 / wat 動画 ×4 / 小学生 裸画像 ×4 / 女の股間 ×4 / 裸画像 ×4 / 女性 金的蹴り動画 ×4
Runtime.getRuntime().exec("/bin/sh -c \\"ls -l\\"", null, dir);
だと動きませんか?
このマシンにJDK系を入れていないのでアレですが、Runtime#exec は文字列をそのままshellに渡しているような気がします。
つまり
$ /bin/sh -c "/bin/sh -c "ls -l""
みたいなものを実行しているのではないかと。2のケースがこれに該当すると思うのですが、手元でbashから実行すると ls (-l抜き) が実行されました。Runtime経由でエラーになるのが不可解。
$ /bin/sh -c "/bin/sh -c \"ls -l\""
だとls -lが実行されたので、shに \" の形で渡すか、最初からshellを付けない(Runtimeが付けてくれることに期待)というのがスジのように思えます。
まだ調査継続中なんですが、シェルをつけずにls -lは正常に動くみたいです。
どうも何もしないでもデフォルトのシェルに渡してくれるみたいですね。
昔のJVMだとシェルを付けないとパイプやシェル固有のコマンドが使えないという問題があったんですが(どうもシェル経由じゃなかったらしいです)、現在のJVMでは改善されているみたいですね。
あと、"を\"で渡す形式ですが、試してみたんですがダメでした。
ここら辺、やっぱりよくわかりません。
String[] cmd = {"sh", "-c", "ls", "-l"};
だとダメですね。コマンドラインから試してみると、
sh -c ls -l だとダメで、sh -c 'ls -l' なら Ok。
で、Runtime.exec(String) のソースを見ると、
StringTokenizer でばらして、Runtime.exec(String[]) に渡しているので、
ls と -l が別の配列要素になってしまってダメと。
こちらもソース確認してみました。
本当に何も考えずStringTokenizerでぶった切ってるだけなんですね、これ・・・
クォートとかのエスケープくらいサポートして欲しかったなあ。
逆にWindowsでなんで動いてるのか不思議です。
Windows では、コマンドラインはスペースで区切られた
単一の文字列で渡すようになっています。
StringTokenizer でばらしても、結局スペースで
くっつけられて渡されるはずです。
Unix はよく分かりませんが、おそらく配列のまま、
あるいは、'\0' 区切りなどで渡されるのでしょう。
なるほど。
初めて納得が行きました。