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

在终端中执行C程序和在Java使用的Runtime.getRuntime().exe()中执行C程序有什么不同,java,c,exec,processbuilder,Java,C,Exec,Processbuilder,我想用java的方法runtime.getRuntime().exec()执行C程序 但如果我用getRuntime()执行C程序,有时C程序会死 但若我在终端执行C程序,永远不会死C程序 在某一点上有两种不同的方法 ps.processBuilder方法也类似当您从shell执行C程序时,它会继承shell设置的所有类型的环境变量和工作目录 使用getRuntime().exec()运行程序时,不调用shell,只调用程序。如果您的程序需要设置特定的环境变量,或者必须在特定的目录中运行,您必须

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

但如果我用getRuntime()执行C程序,有时C程序会死

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

在某一点上有两种不同的方法


ps.processBuilder方法也类似

当您从shell执行C程序时,它会继承shell设置的所有类型的环境变量和工作目录


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

您需要更多的解释,以便任何人都能帮助您。什么是C程序?您使用什么Java代码来执行它?C程序死机时会出现什么错误?它不会继承JVM进程的变量吗?@MarkoTopolnik我以为不会,但我刚刚检查了一下,你是对的。如果没有提供值,它将继承当前进程的环境。即使如此,程序的环境,特别是从IDE(即:Eclipse)启动时,可能与标准控制台设置有很大的不同,特别是对于像我这样拥有大量
.bashrc
文件的人。