1. 子进程并没有自己的控制台,因此,它并不会输出任何信息。
2. 如果要输出子进程的输出信息,可以通过Process中的getInputStream得到子进程的输出流(在子进程中输出,在父进程中就是输入),然后将子进程中的输出流从父进程的控制台输出。
3. 子进程除了输出信息,还有输入信息。既然子进程没有自己的控制台,那么输入信息也得由父进程提供。
import java.io.*;
public class Test
{
public static void main(String[] args)
{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("由父进程输入的信息:" + br.readLine());
}
}
// Test_Exec_In.java
import java.io.*;
public class Test_Exec_In
{
public static void main(String[] args)
{
Runtime run = Runtime.getRuntime();
Process p = run.exec("java test2");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
bw.write("向子进程输出信息");
bw.flush();
bw.close(); // 必须得关闭流,否则无法向子进程中输入信息
// System.in.read();
}
}
分享到:
相关推荐
当调用`exec()`方法时,它会创建一个新的子进程。这个子进程有三个流:标准输出(`stdout`)、标准错误(`stderr`)和标准输入(`stdin`)。如果不处理这些流,它们可能会占用大量内存,导致程序阻塞。因此,我们...
1,申请root权限Runtime.getRuntime().exec("su"); 2,通过数据输出流DataOutputStream写入pm install命令; 3,最后获取Process进程的返回值int i = process.waitFor();,如果i=0,则表明已获取root权限。
在`ShellConsole`类中,我们使用`Runtime.getRuntime().exec("ls -l")`执行了`ls -l`命令,并通过`BufferedReader`读取并打印了命令的输出。注意,执行外部命令可能会抛出异常,因此需要妥善处理。 另一个类`Shell....
- `Runtime.getRuntime().exec(command)`用于启动新的进程。 - `getInputStream()`和`getErrorStream()`分别获取标准输出流和错误输出流。 - `waitFor()`用于等待进程执行完毕并返回退出状态。 #### 2. 使用`...
完美解决runtime.exec()执行进程block死锁以及为waitFor设置超时 不需要耗cpu的循环判断exitValue==0 开两个进程搞定
windows环境下IDEA java代码Runtime.getRuntime.exec中shell的执行环境的解决方案前言解决办法后记 前言 在使用IDEA本地开发监控守护线程的后台,我遇上了执行环境不兼容的问题,爆出各种“xxx不是内部或外部命令,...
在 Java 语言中,可以使用 Runtime.getRuntime().exec() 方法执行命令,该方法可以执行操作系统命令,并返回结果。例如,可以使用以下代码执行命令: `String cmd = "ls -l"; Process process = Runtime.getRuntime...
这里不是通过view来截图,也不是通过底层的framebuffer实现截图,而是采用另外一种方法实现截图,通过Runtime.getRuntime().exec()来实现,并保存在sdcard上,代码很简单。
2. **进程创建**:使用`Runtime.exec()`创建一个新的进程来执行命令。例如,`Runtime.getRuntime().exec("cmd /c " + command)`会执行一个CMD命令。 3. **输入输出流管理**:你需要连接到进程的输入流(`Process....
这通常涉及使用`Runtime.getRuntime().exec()`方法来执行shell命令。 4. **解析和显示日志**:将`adb logcat`的输出解析成日志条目,然后在界面上展示。每个条目包含时间戳、优先级、标签和消息。你可以创建一个...
这两个方法允许Java启动一个新的进程,并执行操作系统命令。因此,我们可以在Java中执行Python脚本,例如: ```java Process process = Runtime.getRuntime().exec("python script.py"); ``` 然而,这并不涉及jar...
例如,`Runtime.getRuntime().exec("taskkill /im Notepad.exe")`将会结束所有记事本进程。如果需要强制结束,只需添加`/F`参数,如`Runtime.getRuntime().exec("taskkill /F /im Notepad.exe")`。 然而,使用Jacob...
Process process = Runtime.getRuntime().exec("su -c adb shell command"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = ...
首先,`Runtime.getRuntime().exec()`方法是Java标准库中用于执行系统命令的常用方式。例如,如果你想在Windows环境下打开默认浏览器,你可以这样写: ```java String url = "http://www.example.com"; Runtime....
- 使用`Runtime.getRuntime().exec()`方法创建一个子进程来执行指定的可执行程序。例如: ```java Process process = Runtime.getRuntime().exec(".\\p.exe"); ``` - `exec()`方法返回一个Process对象,可以...
首先,`Runtime.getRuntime().exec()` 方法的工作原理是创建一个新的进程来执行指定的命令和参数。在Android环境中,这意味着我们可以执行与设备上的Linux shell兼容的命令。例如,如果你想要执行一个简单的`ls`命令...
Runtime runtime = Runtime.getRuntime(); try { runtime.exec("cmd /c start " + url); } catch (IOException e) { e.printStackTrace(); } } /** * 鍦ㄥ欢杩熸寚瀹氱殑绉掓暟鍚庡叧鏈? * ...
在移动设备中,IMEI(International Mobile Equipment Identity)号是一个独特的15-17位数字序列号,用于识别每一部GSM和WCDMA网络的移动设备。它就像手机的身份证,帮助运营商追踪和管理设备。...
//Process p = Runtime.getRuntime().exec("su"); //然后,在向这个进程的写入要执行的命令,即可达到以root权限执行命令: //dos.flush(); //或者用下面的方式: //Runtime.getRuntime().exec&#...