2012-07-03 124 views
-4

我只是想分享我的愚蠢和我如何用完了所有的磁盤空間,大約90 GB與幾行代碼。exec()和我的愚蠢

我只想列出包含一組字符串的目錄(包括子目錄)中的所有文件並將信息保存在一個文件中。我想找到能幫助,我測試了一下,以及....

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

不過,我需要拿起字符串動態搜索和動態生成的命令字符串,搞清楚建設的正確方法後命令字符串,我跑我的程序。我以爲exec()會等待 從操作系統發出任務已完成的信號。我認爲它沒有。即使這樣做,我的程序也永遠不會完成,因爲它也會搜索我通過重定向創建的文件,輸出爲 ,因此grep無限期地運行,直到所有磁盤空間都被使用。

我只想確認Runtime.getRuntime().exec(cmd);不會等待來自操作系統的任何信號。

+0

沒有經驗和愚蠢不一樣。從技術上講,這不是一個問題,但可能會被封閉。 – Chris

+1

'find -exec'和'Runtime.getRuntime().exec(cmd)'做不同的事情。 –

+0

爲了挽救這個問題,你可以將你的問題重新定義爲一個真正的問題,並用你在這個問題上的新見解來回答它。希望其他人可以用他們所知道的貢獻,因此這可能是其他人不會犯同樣錯誤的有用資源,我相信當你「詢問」這個「問題」時,你的目標是什麼:) – posdef

回答

1

Runtime.getRuntime().exec(cmd)不等待來自操作系統的任何信號。如果你想暫停你的程序直到下屬程序完成,試試這個:

Process p = Runtime.getRuntime().exec(cmd); 
p.waitfor();