首页
学习
活动
专区
工具
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; } 发布者:全栈程序员栈长

41410
  • 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.6K10

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

    文件/目录的权限和归属  访问权限 读取:允许查看文件内容、显示目录列表 写入:允许修改文件内容,允许在目录中新建、移动、删除文件或子目录 可执行:允许运行程序、切换目录 归属(所有权) 属主:拥有改文件或目录的用户账号.../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提供系统运行所需要的软件

    557100

    出现 “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,如: ?

    1.9K20

    【愚公系列】软考高级-架构设计师 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)。...然而,这种方式也要求操作系统具有有效的中断管理和处理机制,以确保系统稳定运行

    9420

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

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

    21912

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

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

    51930

    汇编语言中断外部设备操作篇--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指令写入数据操作它,获取对应的端口读取出我们需要的数据。

    87410

    初识单片机: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.1K20

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

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

    53140

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

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

    30910

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

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

    44531

    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起效之后,所有外部中断都被恢复,以打破被保护代码的运行

    88320

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

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

    1.2K20

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

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

    15210

    如何掌握面向对象编程的四大特性、Lambda 表达式及 IO 流:全面指南

    多态的优势包括: 灵活性:多态允许运行时决定调用哪个方法实现,这使得程序可以处理不同类型的对象,而无需了解它们的具体类型。 扩展性:通过多态,可以方便地添加新的子类,而无需修改现有的代码。...数据可以流中读取(输入)或写入到流中(输出),这样就实现了程序外部资源之间的数据交换。...I/O流通常分为输入流和输出流两种类型: 输入流(Input Stream):用于外部资源(如键盘、文件等)读取数据到程序中。程序可以逐个读取流中的数据,直到达到所需的数据或流结束。...I/O流的基本概念: 输入流:用于读取数据。常见的输入流有文件读取网络接收数据、用户输入接收数据等。 输出流:用于写入数据。常见的输出流有向文件写入、向网络发送数据、向用户输出数据等。...I/O流提供了一种通用的、抽象的方式来处理输入和输出,使得程序可以与不同的外部资源进行交互,并实现数据的读取和写入

    13910

    【STM32】HAL库 STM32CubeMX教程十三—RTC时钟

    RTC实质是一个掉电后还继续运行的定时器,定时器的角度来看,相对于通用定时器TIM外设,它的功能十分简单,只有计时功能(也可以触发中断)。但其高级指出也就在于掉电之后还可以正常运行。...RTC用于停机/待机模式下自动唤醒系统。 ● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。...如果在 RTC_CR 寄存器中设置了相应的允许位,则在每个 TR_CLK 周期中 RTC 产生一个中断(秒中断)。...HSE 选择外部时钟源 使能外部晶振LSE RTC设备因为其独特的运行方式(即掉电依旧运行)使用HSE分频时钟或者LSI的时候,在主电源VDD掉电的情况下,这两个时钟来源都会受到影响,资源消耗太大,小小的纽扣电池根本吃不消...RTC时钟经64分频输出到侵入检测引脚TAMPER上 当 TAMPER引脚上的信号 0变成1或者 1变成 0(取决于备份控制寄存器BKP_CR的 TPAL位),会产生一个侵入检测事件。

    2.5K21
    领券