得到反馈后,我运行该程序,但在控制台中没有任何输出
import java.io.File;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.*;
import java.io.InputStream;
class pbdemo {
static public void main(String[] args) throws Exception {
String s;
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/f", "dir");
pb.directory(new File("C:\\ljava"));
try {
Process pro = pb.start();
pro.waitFor();
BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream()));
while ((s = br.readLine()) != null) {
System.out.println("here we go" + s);
}
} catch (Exception e) {
System.out.println("sorry" + e);
}
}
}
程序运行,但不输出。
pro.waitFor();
是一种阻止方法。它会等到进程退出后再返回。这样做的问题是,许多程序只有在读取/清除标准输出缓冲区后才会退出,这意味着,就您而言,它可能永远不会退出。
尝试这样的事情…
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
public class PBDemo {
public static void main(String[] args) throws Exception {
String s;
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/c", "dir");
pb.directory(new File("C:\\ljava"));
pb.redirectError();
try {
Process pro = pb.start();
InputConsumer ic = new InputConsumer(pro.getInputStream());
System.out.println("...Waiting");
int exitCode = pro.waitFor();
ic.join();
System.out.println("Process exited with " + exitCode);
} catch (Exception e) {
System.out.println("sorry" + e);
}
}
public static class InputConsumer extends Thread {
private InputStream is;
public InputConsumer(InputStream is) {
this.is = is;
start();
}
@Override
public void run() {
// This is acutally a bad idea, not all process will write a new line ;)
// BufferedReader br = new BufferedReader(new InputStreamReader(pro.getInputStream()));
try {
int in = -1;
while ((in = is.read()) != -1) {
System.out.print((char) in);
}
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
}
假设我有一个< code>json数组数组 我想将其分解为<code>ArrayList
问题内容: 我有一个用于Linux的Python程序,几乎像这样: 程序挂在此行: 而这种情况发生在保持更新输出的工具中,例如“ Top” 我最好的尝试: 它比第一个更好(它已经发了声),但是返回了: 第二次审判: 与第一个相同。由于“ readlines()”而挂起 它的返回应该是这样的: 并保存在变量“ process”中。我知道吗,我现在真的很困吗? 问题答案: 类似于尾巴的解决方案,仅打印
我已经实现了ThreadPoolExecutor来调用任务。而且,由于核心/队列大小的错误配置,任务似乎挂起在I/O上。我想拉出挂起的线程,以便队列中的其他线程开始执行。 有没有办法列出threadpoolexecutor中的线程并拉出挂起的线程?
在C:\用户\戴尔\桌面\项目\my-app中创建新的React应用。 安装包。这可能需要几分钟。使用cra模板安装反应、反应-多姆和反应-脚本... NPM ERR!最大调用堆栈大小超过npm ERR!超出最大调用堆栈大小 NPM ERR!此运行的完整日志可以在npm ERR中找到!C:\用户\戴尔\AppData\漫游\npmcache_logs\2020-09-05T07_43_27_276
在运行与ignite CacheEvents程序相关的github示例时,没有得到任何输出(示例链接:https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/cacheEventsexample.java)。有人能帮我做这件事吗? 运行时生成的日志
这个程序创建了一个名为datafile.txt的文件,并且应该使用文本I/O将100个随机创建的整数写入文件中。但是,我的输出是“java.util.Random@30c221”100次。我如何得到100个随机数?提前谢谢。