-4

私の愚かさと、数行のコードで約 90 GB のすべてのディスク領域をどのように使い果たしたかを共有したかっただけです。

私がやりたかったのは、一連の文字列を含むディレクトリ (サブディレクトリを含む) 内のすべてのファイルを一覧表示し、その情報をファイルに保存することだけでした。find が役立つと思ったので、それもテストしました....

find . -exec grep -i "TEXT_TO_FIND" '{}' \; -print >TEXT_TO_FIND.txt

ただし、文字列を取得して動的に検索し、コマンド文字列を動的に構築する必要があります。コマンド文字列を構築する正しい方法を見つけた後、プログラムを実行しました。exec() は、タスクが終了したというオペレーティング システムからの信号を待つと思いました。ないと思います。たとえ実行されたとしても、リダイレクトによって作成したファイル、出力、したがって grep がすべてのディスク領域が使用されるまで無期限に実行されるため、私のプログラムは決して完了しません。

Runtime.getRuntime().exec(cmd);OSからの信号を待たないことを確認したいだけです。

4

1 に答える 1

1

Runtime.getRuntime().exec(cmd)OSからの信号を待ちません。従属プログラムが完了するまでプログラムを一時停止する場合は、次のことを試してください。

Process p = Runtime.getRuntime().exec(cmd);
p.waitfor();
于 2012-07-03T13:33:02.853 に答える