2014-10-07 54 views
-3

我想執行C程序使用java的方法runtime.getRuntime()。exec();執行C程序在終端和執行C程序在Java中使用Runtime.getRuntime()。exe()

,但如果我執行使用getRuntime(),有時C程序是死C程序....

,但如果我在終端執行的C程序,不會死C程序...

有有兩種不同的方式去?

ps。 processBuilder方法也一樣

+0

你需要更多的解釋才能讓任何人爲你提供幫助。什麼C程序?你用什麼Java代碼來執行它?你在C程序中遇到了什麼錯誤? – 2014-10-07 12:48:53

回答

2

當您從shell執行C程序時,它會繼承所有類型的環境變量以及由shell設置的工作目錄。

當您使用getRuntime()。exec()運行程序時,您不會調用shell,而只是程序。如果你的程序需要特定的環境變量設置,或者必須在特定的目錄下運行,你必須在調用中提供它們。

+0

它不會繼承JVM進程的變量嗎? – 2014-10-07 12:58:15

+0

@MarkoTopolnik我認爲它沒有,但我只是檢查,你是對的。如果沒有提供值,它會繼承當前進程的環境。 – 2014-10-07 13:02:31

+0

即使如此,特別是如果從IDE(即:Eclipse)啓動程序的環境可能與標準控制檯設置有很大不同,特別是對於像我這樣擁有大量'.bashrc'文件的人來說。 – DevNull 2014-10-07 13:17:50