java运行linux命令获得返回值的问题
Runtime.getRuntime().exec(cmd)这cmd是一个带管道的命名我看你7月的时候帮别人解答过,但是没看明白,我使用的命令是ps-ef|grep-c进...
Runtime.getRuntime().exec(cmd) 这cmd是一个带管道的命名 我看你7月的时候帮别人解答过,但是没看明白 ,我使用的命令是 ps -ef |grep -c 进程名 获取不到返回值 请帮忙解答一下
展开
展开全部
Process process=Runtime. Runtime.getRuntime().exec("ps -ef | grep -v 进程名");然后你要如兆使用线程不停地读取process.getErrorStream()和process.getInputStream(),注意一定要使用线程读,不能等待process执行完成后再读,因为缓存区大小固定,process往缓冲区里渣档租写时若缓冲蠢基区满了则process会等待缓冲区释放
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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();
}
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();
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就像 windows下使用 cmd /c 一样, Linux 下使用 sh -c
String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};
Process p = Runtime.getRuntime().exec(cmd);
在 Stack overflow看宏大到的,现蔽搏竖在没有使用银闭Linux,没法测试。
来自:求助得到的回答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询