java调用可执行程序,如何得到返回值?

airfox2000 2004-11-22 11:11:38
先在solaris8上有一程序bb,调用后可以用echo $?显示返回返回值,成功返回1,错误返回0

现在在java里,我如下调用
Process process = Runtime.getRuntime().exec("bb");
我如何得到返回值,用以判断调用成功与否?
...全文
453 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangqiao 2004-11-22
  • 打赏
  • 举报
回复
改一改就ok了
shangqiao 2004-11-22
  • 打赏
  • 举报
回复
Runtime run = Runtime.getRuntime();
Process process = null;
process = run.exec("java");
int exitValue = -1;
InputStream errorIn = process.getErrorStream();
InputStreamReader streamReader = new InputStreamReader(errorIn);
BufferedReader bufferedReader = new BufferedReader(streamReader);
InputStream inIn = process.getInputStream();
os = process.getOutputStream();
readInput = new WriteTo(inIn, this);
readError = new WriteTo(errorIn, this);
Thread threadError = new Thread(readError);
Thread threadIn = new Thread(readInput);

threadIn.start();
threadError.start();
exitValue = process.waitFor();

class WriteTo implements Runnable {
private InputStream in = null;

private InputStreamReader streamReader = null;

private BufferedReader bufferedReader = null;

private EclipseConsole output;

private String line = null;

public void run() {
try {
streamReader = new InputStreamReader(in);
bufferedReader = new BufferedReader(streamReader);
while ((line = bufferedReader.readLine()) != null) {
output.display.syncExec(new Runnable() {
public void run() {
output.appendText(line + "\n");
}
});
}
output.display.syncExec(new Runnable() {
public void run() {
output.appendText("已关闭" + "\n");
}
});
} catch (IOException e) {
output.display.asyncExec(new Runnable() {
public void run() {
output.appendText(line + "\n");
output.outputContent.setCaretOffset(output.outputContent.getCharCount());
}
});
} finally {
try {
if (streamReader != null)
streamReader.close();
if (bufferedReader != null)
bufferedReader.close();
if (in != null)
in.close();
} catch (Exception e) {

}
}
}

public WriteTo(InputStream in, EclipseConsole output) {
this.in = in;
this.output = output;
}
}
jFresH_MaN 2004-11-22
  • 打赏
  • 举报
回复
process.exitValue();
或者
process.getInputStream();流读打印在控制台的内容
funcreal 2004-11-22
  • 打赏
  • 举报
回复
我见过的一个短信模块是这样做的。
在bb里面,程序执行完以后把状态写到一个文件里。
这样在java中,执行完以后在读取那个文件就行了。
yiqiangyang 2004-11-22
  • 打赏
  • 举报
回复
楼上的有理,强!
我以前碰到的处理的方式如一楼。
简单实用,但是技术不强,值得推敲。

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧