首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Java运行外部程序,读取输出,允许中断

从Java运行外部程序,读取输出,允许中断。

为了实现这个功能,您可以使用ProcessBuilderBufferedReader类。ProcessBuilder用于创建和配置外部进程,BufferedReader用于读取输出。

以下是一个示例代码:

代码语言:java
复制
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class RunExternalProgram {
    public static void main(String[] args) throws Exception {
        ProcessBuilder processBuilder = new ProcessBuilder("your-command", "your-arguments");
        processBuilder.redirectErrorStream(true);

        Process process = processBuilder.start();

        ExecutorService executorService = Executors.newSingleThreadExecutor();
        Future<String> future = executorService.submit(() -> {
            try (BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
                StringBuilder stringBuilder = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    stringBuilder.append(line);
                    stringBuilder.append(System.lineSeparator());
                }
                return stringBuilder.toString();
            }
        });

        // 如果需要中断,可以调用 process.destroy()
        // process.destroy();

        String output = future.get();
        System.out.println("Output: " + output);

        int exitCode = process.waitFor();
        System.out.println("Exit code: " + exitCode);
    }
}

在这个示例中,我们使用ProcessBuilder创建一个新的进程,并使用BufferedReader从进程的输出流中读取数据。我们使用ExecutorServiceFuture来异步执行读取任务,以便在需要时可以中断。

如果您需要中断进程,只需调用process.destroy()即可。

请注意,这个示例代码仅用于演示目的,实际使用时可能需要根据您的需求进行修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

编写一个C程序,运行时输出以下图形_java图形程序设计之图片显示

以下是完成输出文字的代码部分 #include // windows程序所依赖的头文件 #pragma comment(lib,"winmm.lib") #define WINDOW_WIDTH...800 // 窗口宽度 #define WINDOW_HEIGHT 600 // 窗口高度 #define WINDOW_TITLE L"第三讲:windows标准输出字符与图形" // 窗口标题名称...窗口类的附加内存 windclass.cbWndExtra = 0; // 窗口的附加内存 windclass.hInstance = hInstance; // 指定包含窗口过程的程序实例句柄...DispatchMessage(&msg); } } // 六、窗口类的注销 UnregisterClass(L"CharGraphicDemo", windclass.hInstance); // 程序结束...hFont); // 释放字体对象 } BOOL CleaupFunc(HWND hwnd) // 释放资源 { // 留给大家自己完成 return TRUE; } 发布者:全栈程序员栈长

41610
  • ‘java‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件「建议收藏」

    ‘java’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 今天在运行逆向的jar ,其中在cmd中用到了java命令。...;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar (前面的.不要漏掉,表示当前路径) 在CMD里面运行java报不是内部命令解决方法(设置PATH路径...;%JAVA_HOME%\bin;放在最前面);(注意有个小数点,以及之前配置,末尾分号 是英文的) 解决的给个赞 或都在运行java命令前运行 set path=C:\Program Files\...‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。...【nodejs】node不是内部或外部命令 ‘flutter’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 欢迎指点,书到用时方恨少,纸上得来终觉浅。祝君好运!

    2.7K10

    文件目录的权限和归属 访问权限 读取:允许查看文件内容、显示目录列表 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录 可执行:允许运行程序、切换目录 归属(所有权) 属主:拥有改

    文件/目录的权限和归属  访问权限 读取:允许查看文件内容、显示目录列表 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录 可执行:允许运行程序、切换目录 归属(所有权) 属主:拥有改文件或目录的用户账号.../var/tmp   特殊权限  set位权限:suid sgid:设置用户id  设置组id  suid 一般设置可执行程序上,程序在被普通用户执行的时候会继承属主的权限 使用绝对路径或者相对路径可以执行一个可执行文件...30G 格式化 挂载 LVM机制的基本概念 PV物理卷 整个硬盘,或使用fdisk等工具建立的普通分区 包括许多默认4MB大小的PE(基本单元) VG卷组 一个或多个物理卷组合而成的整体 LV逻辑卷 从卷组中分割出的一块空间...提供安装程序的软件包:在压缩包内提供install.sh、setup等安装程序或以“.bin”格式的单个执行文件提供 绿色免安装的软件包:在压缩包内提供已编译好的执行程序文件 解开压缩包后的文件即可直接使用...一般命令格式: bash-3.1-16.1.i386.rpm x86_64  ppc64le  aarch64  s390x  硬件平台 noarch el  6789  软件 镜像里边 BaseOS提供系统运行所需要的软件

    597100

    出现 “java”不是内部或外部命令,也不是可运行程序或批处理文件的问题

    用cmd运行测试下springboot入门案例,没想到出现了如下图这一幕 ? 我电脑环境配置从来没改动过,网上查了下没搜到错误的结果。...可能的情况就是: 安装其他程序的时候,path变量被修改了,导致java命令找不到了,这个时候只有重新在path中设置java的bin目录路径就可以了 关于配置的一些小技巧 一般 HOME环境的路径是安装程序的目录...,如: JAVA_HOME、MAVEN_HOME PATH环境的路径是安装程序的目录的bin,如: C:\Program Files\Java\jdk1.8.0_181\bin E:\apache-maven...-3.6.1\bin D:\mysql\MySQL Server 5.5\bin E:\php-5.6.40 classpath环境的路径是安装程序的目录的lib,如: ?

    2.2K20

    【愚公系列】软考高级-架构设计师 009-输入输出技术

    《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。...欢迎 点赞✍评论⭐收藏前言输入输出技术(I/O技术)是指计算机系统与外部世界(包括用户和其他计算机系统)进行数据交换的方法和过程。这包括从外设接收数据(输入)和向外设发送数据(输出)。...2.程序中断方式程序中断方式(Interrupt-driven I/O)是一种输入输出(I/O)操作技术,其中CPU在需要时被外部设备“中断”,从而响应I/O请求。...2.1 工作原理I/O请求:当外部设备准备好进行数据交换(如数据读取或写入完成)时,它会向CPU发送一个中断请求(IRQ)。...然而,这种方式也要求操作系统具有有效的中断管理和处理机制,以确保系统稳定运行。

    11420

    【愚公系列】软考中级-软件设计师 007-计算机系统知识(输入输出技术)

    输入输出端口:计算机系统中,通过输入输出端口与外部设备进行数据交换。输入输出端口一般由特定的I/O指令控制,可以实现对外部设备的读取和写入操作。...直接程序控制使用特定的指令和编程接口来与输入输出设备进行通信。这些指令和接口允许程序读取和写入设备的寄存器、缓冲区和状态信息,以便进行设备的控制和数据传输。...程序中断方式的基本流程如下:程序执行到需要进行输入输出操作的指令时,比如读取用户输入、写入文件等。CPU发出一个中断请求信号,将控制权转移到中断处理程序。...中断处理程序会保存当前程序的状态,将CPU的控制权转移到I/O处理程序。I/O处理程序会执行相应的输入输出操作,比如从设备中读取数据、向设备中写入数据。...DMA的工作原理是在CPU和外部设备之间设置一个特殊的DMA控制器,它负责管理数据的传输和存储。当外部设备需要读取或写入大量数据时,它会发送一个DMA请求给DMA控制器,请求将数据传输到或从主内存中。

    23412

    寒武纪2019秋招嵌入式软件开发笔试-牛客网刷题

    开漏输出是指输出器件(通常是晶体管)的集电极被接到一个共用的开漏端上,输出时只能拉低电平,而不能提供高电平,因此需要外部上拉电阻来使输出变为高电平。...我答:定时器是单片机中常见的一个模块,它可以计算时间并产生定时中断,具有如下作用和优势: 计时功能:定时器可以通过内部晶振或外部时钟源计算时间,实现程序的精确延时或周期性操作,并且不占用CPU资源。...发送寄存器地址:主控制器将要读取的寄存器地址Y发送到设备X,告诉设备需要读取哪个寄存器的值。 等待应答:主控制器再次等待从设备对其发出应答信号,确认设备已经正确接收了寄存器地址信息。...中断允许:单片机内部有一个中断使能寄存器,通过设置该寄存器的相应位,可以决定是否允许处理来自外部的中断请求。如果中断使能被禁止,则即使产生了中断请求,也无法进入中断服务程序。...中断返回:中断服务程序在处理完中断请求后,需要使用一条特殊指令(如RET或RETI)返回到原来的程序执行状态,继续运行未完成的任务。

    53030

    汇编语言中断及外部设备操作篇--06

    对键盘输入的处理的int 9h中断和int 16h中断 演示:输入A、B、C、D、E、Shift_A、A 引发的(int 9)“动作” 演示int 16h 调用int 16h 从键盘缓冲区中读取键盘的输入...do0中断程序的入口地址,写入到中断向量表的0号表项中 因为do0中断程序中mov ax,4c00h int 21h会直接结束程序运行,返回DOS系统,因此并不会在中断程序执行结束后,返回原有程序继续执行...中断调用的中断例程变为我们新写的中断例程地址,即0:204h,并且这个过程要保证不被可屏蔽中断打断,通过cli设置完成,结束后,再允许被打断,通过STI完成 程序返回 ---- 用中断响应外设 如何操作外部设备...可存储15个按 键扫描码 依次从键盘缓冲区读取出一个字,放入数据缓冲寄存器,然后再放入AX中,AH存放扫描码,AL存放ASCII ---- 调用int 16h 从键盘缓冲区中读取键盘的输入...因为进行了统一编址,所以我们可以很容易定位到这两个端口的地址都是什么,然后通过in和out指令写入数据操作它,获取从对应的端口读取出我们需要的数据。

    93910

    初识单片机:51单片机简介

    8051的时钟有两种方式,一种是片内时钟震荡方式,需要在这两个脚外接石英晶体和震荡电容,震荡电容的值一般取10p~30p; 另一种是外部时钟方式,将XTAL1接地,外部时钟信号从XTAL2脚输入。...当输入连续两个机器周期以上高点平时有效,用来完成单片机的复位初始化操作,即单片机从头开始执行程序。 PSEN(29脚)—— 程序存储器允许输出控制端。...读取外部程序存储器时PSEN低电平有效,以实现外部程序存储器单元的读操作(了解即可)。...EA/Vpp(31脚)—— EA接高电平时,单片机读取内部程序存储器。当扩展有外部ROM时,当读取完内部ROM后自动读取外部ROM。EA接低电平时,单片机直接读取外部ROM。...四、中断(后面再详细了解) 51单片机一共有6个中断源: INT0——外部中断0 INT1——外部中断1 T0/1/2——计时器/定时器中断,由计数器满回零引起。

    4.3K20

    深入解析Kernel、SC、IO和内存:计算机科学中的核心概念

    引言在计算机科学领域,Kernel(内核)、SC(系统封装或特定工具)、IO(输入输出)和内存是几个至关重要的概念。它们不仅支撑着计算机系统的基本运行,还是开发高效、稳定应用程序的基础。...实际运用在Java开发中,虽然Java程序运行在Java虚拟机(JVM)上,但JVM本身仍然依赖于操作系统内核提供的服务。...中断和异常处理:内核通过中断和异常处理机制来响应外部设备和内部错误,确保系统的稳定性和可靠性。重要性内核是操作系统的核心,其性能和稳定性直接影响到整个计算机系统的运行效率和用户体验。...IO(输入输出)了解基本概念IO即输入输出(Input/Output),是计算机与外部世界进行数据交换的方式。IO操作包括从外部设备读取数据到内存、将内存中的数据写入外部设备等。...操作系统内核会捕获这些中断信号,并调用相应的设备驱动程序来处理IO请求。设备驱动程序会与硬件设备进行交互,完成数据传输任务。重要性IO操作是计算机与外部世界进行交互的基本方式之一。

    23731

    MIT 6.S081 教材第五章内容 -- 中断与设备驱动--上

    我们首先要关心的是,中断是从哪里产生的? 因为我们主要关心的是外部设备的中断,而不是定时器中断或者软件中断。...SEPC寄存器,它会保存当trap,page fault或者中断发生时,CPU运行的用户程序的程序计数器,这样才能在稍后恢复程序的运行。...---- UART驱动的top部分 接下来看一下如何从Shell程序输出提示符“$ ”到Console。首先我们看init.c中的main函数,这是系统启动后运行的第一个进程。...陷阱处理程序调用devintr(kernel/trap.c:177),它查看RISC-V的scause寄存器,发现中断来自外部设备。...因此中断处理程序不允许考虑他们已经中断的进程或代码。 例如,中断处理程序不能安全地使用当前进程的页表调用copyout(注:因为你不知道是否发生了进程切换,当前进程可能并不是原先的进程)。

    55541

    吊打Java面试官-Java内存模型深入详解(JMM)

    0 CPU 性能优化手段 - 缓存 为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。: 例如: CPU高速缓存。...1 Java内存模型(JMM)的意义 内存模型描述程序的可能行为。...,内存,工作内存的定义来看 主内存 === Java堆中的对象实例数据部分 工作内存 === 虚拟机栈中的部分区域 从更底层的层次来说 主内存直接对应于物理硬件的内存 为了更好的运行速度,虚拟机(甚至硬件系统的本身的优化措施...外部操作(socket等等…) 启动和终止 程序顺序 如果一个程序没有数据竞争,那么程序的所有执行看起来都是顺序一致的 本规范只涉及线程间的操作; 一个变量如何从主内存拷贝到工作内存,从工作内存同步回主内存的实现细节...Thread.interrupted或Thread.isInterrupted 不允许read/load、store/write操作之一单独出现 不允许一个变量从主内存读取了但工作内存不接收,或从工作内存发起回写但主内存不接收

    44531

    Java内存模型深入详解(JMM)

    1 Java内存模型(JMM)的意义 内存模型描述程序的可能行为。...,内存,工作内存的定义来看 主内存 === Java堆中的对象实例数据部分 工作内存 === 虚拟机栈中的部分区域 从更底层的层次来说 主内存直接对应于物理硬件的内存 为了更好的运行速度,虚拟机(甚至硬件系统的本身的优化措施...)可能会让工作内存优先存储于寄存器和高速缓存器中,因为程序运行时主要访问读写的是工作内存 3 内存间同步操作 3.1 线程操作的定义 操作定义 write要写的变量以及要写的值。...外部操作(socket等等…) 启动和终止 程序顺序 如果一个程序没有数据竞争,那么程序的所有执行看起来都是顺序一致的 本规范只涉及线程间的操作; 一个变量如何从主内存拷贝到工作内存,从工作内存同步回主内存的实现细节...Thread.interrupted或Thread.isInterrupted 不允许read/load、store/write操作之一单独出现 不允许一个变量从主内存读取了但工作内存不接收,或从工作内存发起回写但主内存不接收

    31510

    DOS汇编程序提高练习

    ,在CLI起效之后,所有外部中断都被屏蔽,保证当前运行的代码不被打断,起到保护代码运行的作用 MOV WORD PTR DS:[BX],OFFSET CREATENUM ;字操作.将CREATENUM...起效之后,所有外部中断都被恢复,以打破被保护代码的运行,允许硬件中断转而处理中断的作用。...3、CLI和STI总结 CLI汇编指令全称为Clear Interupt,该指令的作用是禁止中断发生,在CLI起效之后,所有外部中断都被屏蔽,这样可以保证当前运行的代码不被打断,起到保护代码运行的作用。...STI汇编指令全称为Set Interupt,该指令的作用是允许中断发生,在STI起效之后,所有外部中断都被恢复,这样可以打破被保护代码的运行,允许硬件中断转而处理中断的作用。...,掌握了CLI 指令:即禁止中断发生,在CLI起效之后,所有外部中断都被屏蔽,保证当前运行的代码不被打断,起到保护代码运行的作用,和STI指令:即允许中断发生,在STI起效之后,所有外部中断都被恢复,以打破被保护代码的运行

    88920

    STM32学习笔记(超详细整理145个问题)

    另一种成为IAP(在应用编程),适用于很多接口(USB,串口,CAN)下载到存储器中,IAP允许在程序运行时重新烧写FLASH 43、FLASH分为主存储器(这里放置用户的程序代码)和信息块(启动代码)...这么看来:TXE允许程序有更充裕的时间填写TDR寄存器,保证发送的数据流不间断。TC可以让程序知道发送结束的确切时间,有利于程序控制外部数据流的时序。...141、STM32正常运行流程图; 上图表示STM32正常运行的流程图,可以看到上电复位后系统从0x80000004处开始运行程序,这里放置的是复位中断向量,然后跳转至复位中断程序入口后再跳转至...main函数运行用户的程序。...142、加入IAP之后程序运行流程图; 上图表示加入IAP后的STM32程序运行流程图。

    1.3K20

    【嵌入式】你真的知道STM32中的EXTI外部中断吗?你看过EXTI功能框图吗?没关系,我来给你一一介绍,干货满满!

    通过EXTI,当外部信号发生变化时,可以触发中断,使CPU暂停当前正在运行的程序,转而处理中断事件,处理完成后又返回原来被暂停的位置继续执行,极大地增强了单片机对外部事件响应的能力。。...下图这个就是AFIO的数据选择器,是一个梯形,有多个输入和一个输出,在侧面有选择控制端,根据选择控制端的数据,从输入选择一个接到输出。...如果读取之后返回的是1,那么继续往左走,与中断屏蔽寄存器一起进入一个与门,最后到NVIC中断控制器。...这个与门的作用在这里就是一个开关控制,这个中断屏蔽控制器给1那么请求挂起寄存器就是直接输出,也就是允许中断。如果给0无论请求挂起寄存器给什么都是0,不允许中断。...还需要注意的是中断标志位必须清除,不然中断一直在,程序会停这里。

    28010

    学习计算机基础的知识汇总

    可以看到硬盘有多”慢“,但是CPU的速度是很快的,所以即使CPU可以直接读出并运行磁盘中保存的程序,由于磁盘读取速度慢,程序的运行速度还是会降低。...从中断处理开始到请求中断的程序(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是停止的。...CPU接收到来自中断控制器的中断请求后,会把当前正在运行的主程序中断,并切换到中断处理程序。...中断处理程序的第一步处理,就是把CPU所有寄存器的数值保存到内存的栈中。 在中断处理程序中完成外围设备的输入输出后,把栈中保存的数值还原到CPU寄存器中。 然后再继续进行对主程序的处理。...包括后面的java虚拟机则是屏蔽了不同操作系统的差异。不同的操作系统都有对应的java虚拟机,运行java程序时,java虚拟机读取字节码xlass文件转换咸亨对应对本地代码进行运行。

    16510
    领券