你調用exec(字符串命令),這是一個方便的方法。
表單exec(command)的調用與調用exec(command,null,null)的行爲方式完全相同 。 from the Runtime documentation
即(exec(String command,String[] envp, File dir)
)反過來行爲完全相同的方式調用exec(String[] cmdarray, String[] envp,File dir)
,其中cmdarray是命令所有的令牌的陣列。
命令字符串使用由調用new StringTokenizer(command)創建的StringTokenizer分解爲令牌,而不進一步修改字符類別。令牌生成器生成的令牌隨後以相同的順序放置在新的字符串數組cmdarray中。
所以你的命令"sh -c /home/burhan/bat.sh"
得到一個空目錄,因此子進程繼承了當前進程的當前工作目錄。
我相信你需要的地方組織你的命令的線沿線的:
String[] commands = new String[] { "sh", "-c", "/home/burhan/bat.sh" };
然後調用exec(commands,String[] envp, File dir)
或 「/ bin/sh的」,而不是 「SH」>如果@Abishek馬諾哈蘭是正確的,你應該放棄-c。
或者,您可以使用ProcessBuilder作爲exmeplified in this answer。
它不工作.. PLZ建議另一種方式.. – BURHANUDDIN
是否拋出任何錯誤?你檢查過'p'的'outputstream'和'errorstream'嗎? – Codebender
no ... bt在我們編寫時顯示以下輸出:'System.out.println(p);' '[email protected]' – BURHANUDDIN