方法一
//Process p = Runtime.getRuntime().exec("ping 127.0.0.1 -t");
Process p = Runtime.getRuntime().exec("javac");
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line = reader.readLine())!= null){
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}
方法二
package com.cmd;
import java.lang.*;
import java.io.*;
public class Process {
public static void main(String[] args) {
java.lang.Process process = null;
try {
process = Runtime.getRuntime().exec("net user");
ByteArrayOutputStream resultOutStream = new ByteArrayOutputStream();
InputStream errorInStream = new BufferedInputStream(process.getErrorStream());
InputStream processInStream = new BufferedInputStream(process.getInputStream());
int num = 0;
byte[] bs = new byte[1024];
while((num=errorInStream.read(bs))!=-1){
resultOutStream.write(bs,0,num);
}
while((num=processInStream.read(bs))!=-1){
resultOutStream.write(bs,0,num);
}
String result=new String(resultOutStream.toByteArray());
System.out.println(result);
errorInStream.close(); errorInStream=null;
processInStream.close(); processInStream=null;
resultOutStream.close(); resultOutStream=null;
} catch (IOException e) {
e.printStackTrace();
}finally{
if(process!=null) process.destroy();
process=null;
}
}
}
4. Runtime.exec() 不等同于直接执行command line命令!
啊,我算是在这里吃了苦头了。Runtime.exec()很有局限性,对有些命令不能直接把command line里的内容当作String参数传给exec().
比如重定向等命令。举个例子:
javap -l xxx > output.txt
这时要用到exec的第二种重载,即input 参数为String[]:
Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","javap -l xxx > output.txt"});
- import java.io.InputStreamReader;
-
import java.io.LineNumberReader;
-
import java.util.ArrayList;
-
import java.util.List;
-
-
-
public class test{
-
-
-
-
-
public static void execShell(String shell){
-
-
try {
- Runtime rt = Runtime.getRuntime();
- rt.exec(shell);
-
} catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
-
-
-
-
-
-
-
public static List runShell(String shStr) throws Exception {
-
List<String> strList = new ArrayList();
-
- Process process;
-
process = Runtime.getRuntime().exec(new String[]{"/bin/sh","-c",shStr},null,null);
-
-
InputStreamReader ir = new InputStreamReader(process
- .getInputStream());
-
LineNumberReader input = new LineNumberReader(ir);
- String line;
- process.waitFor();
-
while ((line = input.readLine()) != null){
- System.out.println(line);
- strList.add(line);
- }
-
-
return strList;
- }
-
public static void main(String []arge)throws Exception {
-
-
test t=new test();
-
t.runShell("/home/ubuntu/soft/tomcat/bin/startup.sh")
- }
String[] cmd = new String[]{"/bin/sh","-c", " ps -ef"};
Process ps = Runtime.getRuntime().exec(cmd);
BufferedReader br = new BufferedReader(new InputStreamReader(ps.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line).append("\n");
}
String result = sb.toString();
System.out.println(result);
分享到:
相关推荐
在Java编程中,有时我们需要与操作系统进行交互,执行外部程序(如.exe文件)并获取其输出结果。这对于系统集成、自动化测试或者调用系统命令行工具等场景非常常见。本篇将详细介绍如何在Java中执行.exe文件并捕获...
在Java编程中,有时我们需要执行操作系统级别的命令,例如运行`cmd`命令,获取命令的输出结果,这通常涉及到进程的创建和管理。本篇将详细讲解如何在Java中实现这一功能,以及涉及的相关知识点。 首先,Java提供了...
本文将基于给定的文件信息,深入探讨如何利用Java来获取操作系统的关键信息,并对每一条命令及其返回值进行详细解释。 ### 1. 获取Java运行时环境版本信息 #### 1.1 `java.version` 该属性返回当前Java运行时环境...
根据提供的文件信息,我们可以深入探讨如何在Java程序中调用Linux命令,并且解析与之相关的技术要点。 ### Java调用Linux命令 Java提供了一种强大的机制来执行操作系统级别的任务,其中包括调用Linux命令。实现这...
在Java中,`java.lang.Runtime`类提供了与当前运行时系统交互的方法,其中包括`exec()`方法,该方法允许我们启动一个新的进程并控制其输入和输出流。这对于需要与操作系统交互的任务非常有用。 #### 二、Runtime类...
例如,使用 `result = sh(script: "", returnStdout: true).trim()` 可以执行 shell 命令并获取其返回值。 使用 Groovy 脚本 Groovy 脚本可以用来实现一些复杂的功能。例如,从配置文件中读取 URL 信息,可以使用...
北京动力节点-Java编程零基础教程-056-Java基本语法-获取当前系统的字符编码.avi 北京动力节点-Java编程零基础教程-057-Java基本语法-数据类型-整型.avi 北京动力节点-Java编程零基础教程-058-Java基本语法-数据...
- 初学者将学习如何使用JDK中的javac命令编译源代码,并通过java命令运行已编译的字节码文件。 8. **代码规范** - 遵循良好的编程习惯,如使用有意义的变量名,保持代码整洁,以及注释的使用,这些都在示例中起到...
2. 生成JNI头文件:运行`javah`命令,根据Java源代码生成包含C函数原型的头文件。 3. 实现C函数:在C代码中,实现`JNIEXPORT`和` JNICALL`修饰的函数,这是JNI约定的函数声明方式。 4. 动态加载库:在Java代码中,...
* Java:Java 解释命令,用于将字节码文件解释成机器码并执行。 * Javadoc:Java 文档生成命令,用于生成 Java 源代码的文档。 * Classpath:类路径,用于指定 Java 类的查找路径。 * Version:版本,用于标识 Java ...
在下载并解压"java 16.0.1 windows.zip"后,用户可以找到包含Java SDK的所有组件,如Java运行时环境(JRE)、Java开发工具包(JDK),以及相关的文档和示例。安装或解压后,开发者可以利用这个版本的Java进行编程,...
在Java中获取PID并传递给`taskkill`命令,代码可能如下: ```java Process process = Runtime.getRuntime().exec("taskkill /F /IM winword.exe"); ``` 这里的`/F`参数表示强制结束,`/IM`参数后面跟的是进程的...
5. **处理结果**: 如果Java方法有返回值,C++代码需要处理这些结果。 6. **释放资源**: 在完成调用后,记得释放分配的JNI资源,如局部引用。 **示例文件分析** - `Sample2.c`和`Sample2.cpp`: 这两个文件可能是C++...
而`java`命令则用于执行编译后的字节码文件,即运行JAVA程序。 2. 字节码与可执行代码: JAVA源程序被编译成字节码,这是一种平台无关的中间语言,由JAVA虚拟机(JVM)负责解释执行。字节码不是直接的机器代码,...
命令行下调用curl获取网页信息,例如在Java servlet中使用response.getWriter().print("success") curl就可以获取到"success",并保存到check.txt中,再从check.txt中读取数据,并做判断
6. **classpath**:指定查找类文件的路径,是Java运行时环境寻找类的重要配置。 7. **version**:用于查询Java版本信息。 8. **public**:访问修饰符,表示类、接口或方法可以被任何其他类访问。 9. **class**:...
- **JRE(Java Runtime Environment)**:Java运行环境,包含Java虚拟机(JVM)和核心类库。 **2. 安装配置** - **安装**:通常情况下,安装JDK会自动安装JRE。 - **配置**:设置环境变量`JAVA_HOME`指向JDK...
- **Runtime类**:提供了一个运行时对象,通过该对象可以访问当前Java应用程序与运行系统之间的接口。 - **ProcessBuilder类**:提供了更灵活的方式来创建新的进程。它允许指定命令行参数、环境变量以及重定向标准...
在下载的压缩包"java-11-openjdk-11.0.7.10-1.windows.redhat.x86_64.zip"中,包含了OpenJDK 11.0.7的全部组件,包括Java运行时环境(JRE)、开发工具(如javac编译器、jar打包工具等)、库文件和必要的配置文件。...