返回信息流Servlet中用Rumtime.getRumtime().exec()来调用shell命令。
能不能在一个Servlet中多次使用这个方法调用shell命令呢?
比如在一个方法中:
Rumtime.getRumtime().exec("cd ~");
Rumtime.getRumtime().exec("pwd");
我这样写执行的时候会报错,有没有其他的方法可以在一个方法里面多次调用shell命令?
上面问题的解决方法:把cd ~替换成 /bin/sh cd ~
现在我遇到一个新的问题
比如说,我想在~/test目录下运行ls命令
但是通过
Runtime.getRuntime().exec("/bin/sh cd ~/test");
Runtime.getRuntime().exec("ls");
这样是得不到我想要的结果的
这两个命令之间完全没有关系=。=
怎么让它们关联起来?
这是一条镜像帖。来源:北邮人论坛 / java / #17411同步于 2011/3/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[已解决]Java调用shell的问题
oooooo
2011/3/10镜像同步14 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
报什么错?
【 在 oooooo (齐鲁大地|7788|路·中郎|淡淡|琉球) 的大作中提到: 】
: Servlet中用Rumtime.getRumtime().exec()来调用shell命令。
: 能不能在一个Servlet中多次使用这个方法调用shell命令呢?
: 比如在一个方法中:
: ...................
exception
java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory
java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
java.lang.Runtime.exec(Runtime.java:593)
java.lang.Runtime.exec(Runtime.java:431)
java.lang.Runtime.exec(Runtime.java:328)
test.TestSuseDts.doGet(TestSuseDts.java:56)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
root cause
java.io.IOException: java.io.IOException: error=2, No such file or directory
java.lang.UNIXProcess.<init>(UNIXProcess.java:148)
java.lang.ProcessImpl.start(ProcessImpl.java:65)
java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
java.lang.Runtime.exec(Runtime.java:593)
java.lang.Runtime.exec(Runtime.java:431)
java.lang.Runtime.exec(Runtime.java:328)
test.TestSuseDts.doGet(TestSuseDts.java:56)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Servlet的doGet方法的代码
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String line=null;
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
Runtime.getRuntime().exec("cd /home/webdts/dts-nolisence/Scan");
Process process=Runtime.getRuntime().exec("pwd");
is=process.getInputStream();
isr=new InputStreamReader(is);
br=new BufferedReader(isr);
while ( (line = br.readLine()) != null) {
out.println(line);
}
out.flush();
out.close();
【 在 ox (小贝) 的大作中提到: 】
: 报什么错?
找不到cd这个命令
【 在 oooooo (齐鲁大地|7788|路·中郎|淡淡|琉球) 的大作中提到: 】
: exception
: java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory
: java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
: ...................
这样可以
现在我遇到一个新的问题
比如说,我想在~/test目录下运行ls命令
但是通过
Runtime.getRuntime().exec("/bin/sh cd ~/test");
Runtime.getRuntime().exec("ls");
这样是得不到我想要的结果的
这两个命令之间完全没有关系=。=
怎么让它们关联起来?
【 在 snowtree (snowtree) 的大作中提到: 】
: Runtime.getRuntime().exec("/bin/sh cd ~");