2014-10-07 59 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