终端中执行C程序和Java中使用Runtime.getRuntime()。exe()执行C程序有什么不同

时间:2014-10-07 12:45:30

标签: java c exec processbuilder

我想执行C程序使用java的方法runtime.getRuntime()。exec();

但如果我执行C程序使用getRuntime(),有时C程序就死了....

但如果我在终端执行C程序,永远不会死C程序......

在某些时候,有两种不同的方式吗?

PS。 processBuilder方法也一样

1 个答案:

答案 0 :(得分:2)

当你从shell执行一个C程序时,它会继承所有类型的环境变量,以及由shell设置的工作目录。

使用getRuntime()。exec()运行程序时,不要调用shell,而只调用程序。如果您的程序需要设置特定的环境变量,或者必须在特定目录中运行,则必须在调用中提供它们。