2012-06-24 46 views
0

我正在編寫一個將命令發送到unix shell的應用程序。並非所有unix shell的java命令都在運行

我從來沒有發出cp和chmod命令(我知道)有任何麻煩,但由於某些原因,mv命令實際上不會移動我加速的文件?

我的代碼可以顯示套管如下:

import java.io.IOException; 
    public class ExecuteCommand { 
     public static void main(String[] args){ 
      ExecuteCommand exec = new ExecuteCommand("cp /some/directory/file.txt /some/directory/of/mine/"); 
      ExecuteCommand exec2 = new ExecuteCommand("chmod 666 /some/directory/of/mine/file.txt"); 
      ExecuteCommand exec3 = new ExecuteCommand("mv /some/directory/of/mine/file.txt /some/directory/of/mine/subDirectory/"); 
     } 
     public ExecuteCommand(String command) { 
      try { 
        System.out.println("EXECUTING!::" + command);  
        Process child = Runtime.getRuntime().exec(command);    
      } catch (IOException e) { 
      } 
     } 

    } 

我曾嘗試在沒有進展的命令之間把定時器正在進行,以確保我的%命令,100被處理。

請注意,我的代碼包含示例信息,如果某些unix文件系統語法不正確,請原諒我,請不要責怪這個問題。

如果您需要任何進一步的信息請諮詢我會盡快提供

謝謝你們=)與示例代碼

+0

首先,您應該在catch塊中記錄IOExceptions(用於測試e.printStackTrace()應該足夠了)。其次,如果你只是執行'mv'(exec3),問題是否也會發生? – home

+0

不,我可以複製和粘貼從構造函數打印的命令,它工作得很好。 –

+0

並沒有例外在主程序中拋出我有這個示例實現? –

回答

0

的一個問題是,你是壓垮例外。如果有任何問題,您將丟棄證據。

第二個問題是,在啓動下一個命令之前,您並未等待一條命令完成。如果後面的一個依賴於較早的一個完成,它將失敗。

第三個問題是您沒有檢查命令返回/退出代碼,或者查看它們可能產生的任何錯誤消息。錯誤消息可能會告訴你爲什麼命令無法正常工作......如果你不想打印並打印它們。

最後的(元 - )問題是,這不是你真正的代碼......所以我們不知道我們看到的問題只是你的問題的人工產物。請提供真實代碼,而不是一些糟糕的版本。

+0

注意到,感謝您的建議。我沒有意識到Process庫中的waitFor()方法。我會嘗試的,如果問題仍然存在,那麼我將會發布我的實際代碼。謝謝你回答我的問題,儘可能用我缺乏的信息,我真的很感激它=) –

+0

waitFor()方法是它做了什麼,現在一切都運行平穩,完全如預期。 –