java运行linux命令获得返回值的问题

Runtime.getRuntime().exec(cmd)这cmd是一个带管道的命名我看你7月的时候帮别人解答过,但是没看明白,我使用的命令是ps-ef|grep-c进... Runtime.getRuntime().exec(cmd) 这cmd是一个带管道的命名 我看你7月的时候帮别人解答过,但是没看明白 ,我使用的命令是 ps -ef |grep -c 进程名 获取不到返回值 请帮忙解答一下 展开
 我来答
小狂中E
2014-01-21 · TA获得超过1418个赞
知道大有可为答主
回答量:1514
采纳率:66%
帮助的人:1025万
展开全部
Process process=Runtime. Runtime.getRuntime().exec("ps -ef | grep -v 进程名");然后你要如兆使用线程不停地读取process.getErrorStream()和process.getInputStream(),注意一定要使用线程读,不能等待process执行完成后再读,因为缓存区大小固定,process往缓冲区里渣档租写时若缓冲蠢基区满了则process会等待缓冲区释放
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lmy_sk521
推荐于2016-02-09 · TA获得超过2272个赞
知道小有建树答主
回答量:1330
采纳率:73%
帮助的人:723万
展开全部
Process myProc = null;
try {
myProc = Runtime.getRuntime().exec(cmd);
myProc.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(myProc.getInputStream()));
String currentLine = "";
while((currentLine = in.readLine()) != null) {
if(currentLine.trim().length()>0){
list.add(currentLine.trim());
}
}
in.close();
} catch (IOException e) {
// e.printStackTrace();
}catch (Exception e) {
// e.printStackTrace();
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2014-01-21 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:2336万
展开全部

就像 windows下使用 cmd /c 一样, Linux 下使用  sh -c

String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};

Process p = Runtime.getRuntime().exec(cmd);

在 Stack overflow看宏大到的,现蔽搏竖在没有使用银闭Linux,没法测试。

来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式