Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java Process destroy方法kill进程,返回码测试

Java Process destroy方法kill进程,返回码测试

作者头像
囚兔
发布于 2018-02-08 02:45:40
发布于 2018-02-08 02:45:40
2.4K00
代码可运行
举报
文章被收录于专栏:IT杂记IT杂记
运行总次数:0
代码可运行

Java代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.spiro;

import java.io.IOException;

public class Main {

    public static void main(String[] args) {
	    String command = args[0];

        System.out.println("Running command [" + command + "]");

        try {
            final Process process = Runtime.getRuntime().exec(command);

            Thread t1 = new Thread() {
                @Override
                public void run() {
                    try {
                        int exitCode = process.waitFor();
                        System.out.println("Process exit with code [" + exitCode + "]");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };

            Thread t2 = new Thread() {
                @Override
                public void run() {
                    System.out.println("Waiting 2 seconds.");
                    try {
                        Thread.sleep(2000L);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    process.destroy();
                    System.out.println("Process destroyed");
                }
            };

            t1.start();
            t2.start();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

测试shell脚本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/sh

echo "abc--1"
sleep 3s
echo "abc--2"
sleep 3s
echo "abc--3"

执行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
java com.spiro.Main "sh /tmp/test.sh"

结果:

Running command [sh /tmp/test.sh] Waiting 2 seconds. Process destroyed Process exit with code [143]

总结

通过 destroy 方法可以kill进程,并可以得到非0得返回码

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
java9系列(四)Process API更新
/Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home/lib/src.zip!/java.base/java/lang/ProcessHandle.java
code4it
2018/09/17
5120
面经手册 · 第20篇《Thread 线程,状态转换、方法使用、原理分析》
作者:小傅哥 博客:https://bugstack.cn ❝沉淀、分享、成长,让自己和他人都能有所收获!? ❞ 目录 一、前言 二、面试题 三、Thread 状态关系 四、Thread 状态测试
小傅哥
2020/12/16
4810
java Runtime.exec()执行shell/cmd命令:常见的几种陷阱与一种完善实现
我们项目要java执行命令“dmidecode -s system-uuid”获取结果,然而碰到问题,当项目一直执行好久后,Runtime.getRuntime().exec()获取结果为空,但也不报错,重启项目就又可以了,所以猜测属于陷阱2,并进行记录。
刘大猫
2024/11/17
9180
一文读懂进程、线程、协程、纤程和Virtual Threads之间的区别与关系
在多线程编程和并发处理中,我们经常会听到进程、线程、协程、纤程和Virtual Threads这些概念。虽然它们都与并发编程相关,但很多人对它们的区别和关系并不清楚。本文将深入解析进程、线程、协程、纤程和Virtual Threads之间的区别与关系,帮助读者更好地理解并发编程的不同概念。
疯狂的KK
2024/02/20
7.2K0
一文读懂进程、线程、协程、纤程和Virtual Threads之间的区别与关系
了解多线程以及如何进行并发编程?
硬件层面软件层面并发和并行JAVA中的线程线程的基础源码分析线程的启动线程的中断异步并发异步 Future异步Callback异步编排 CompletableFuture小结更多
架构探险之道
2020/07/07
8170
了解多线程以及如何进行并发编程?
Java AIO 异步IO应用实例
项目地址:https://github.com/windwant/windwant-demo/tree/master/io-service
WindWant
2020/09/11
6890
【Java】Thread类中的join()方法原理
join()方法的作用,是等待这个线程结束;但显然,这样的定义并不清晰。个人认为”Java 7 Concurrency Cookbook”的定义较为清晰:
全栈程序员站长
2022/09/01
7150
有了Future为什么还要CompletableFuture?
cheese
2024/02/06
2710
有了Future为什么还要CompletableFuture?
干货含源码!如何用Java后端操作Docker(命令行篇)
Docker 是现代开发和部署流程中不可或缺的一部分。它简化了应用程序的环境配置、打包和分发,使得在不同机器上运行相同的应用变得更加轻松和一致。本文将详细介绍如何使用命令行工具(CMD)操控 Docker 来配置环境。
watermelo37
2025/01/22
2590
干货含源码!如何用Java后端操作Docker(命令行篇)
Process类详解
ProcessBuilder是一个final类,Process是一个抽象类。ProcessBuilder.start() 和 Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例,该实例可用来控制进程状态并获得相关信息。
matt
2022/10/25
1.7K0
ProcessBuilder API 使用教程
Java 的 Process API 为开发者提供了执行操作系统命令的强大功能,但是某些 API 方法可能让你有些疑惑,没关系,这篇文章将详细介绍如何使用 ProcessBuilder API 来方便的操作系统命令。
未读代码
2023/09/01
7540
ProcessBuilder API 使用教程
Java并发编程基础
在不同的 JVM 以及 操作系统 上,线程规划会存在差异,有些操作系统甚至会忽略对线程优先级的设定。 线程优先级不能作为程序正确性的依赖,因为操作系统可以完全不用理会 Java 线程对于优先级的设定。
103style
2022/12/19
2260
Java并发编程基础
【Java编程进阶之路 12】线程调度的艺术:sleep与wait方法的深入探讨
在Java多线程编程中,sleep和wait方法对于线程的控制和管理起着至关重要的作用。本文将详细探讨这两个方法的工作原理、使用场景以及它们之间的差异,并通过实例代码来加深理解。
夏之以寒
2024/04/11
1.2K0
java---网络编程
socket(套接字) , 各种开发语言提供出来专门用于网络编程的API(接口),在传输层上的协议进行的编程tcp udp , 通过端口号来进行通信,实现点对点之间的通信 (服务端的Socket , 客户端的Socket)
用户10787181
2023/10/17
2930
java---网络编程
Java 多线程学习
这些动作都可以抽象为任务,虽然看起来一心二用,但人只有一个大脑,在一个时间片刻只能处理一个任务。
默 语
2024/11/20
1330
Java 多线程学习
什么是线程和进程?是如何创建、同步、通信、销毁的?
计算机系统中,线程和进程是两个基本的概念。多线程编程已经成为现代编程中比较常见的技术,因此对于线程和进程的深刻理解变得尤为重要。
网络技术联盟站
2023/06/04
5900
java 实现 调用Linux命令工具类
目录 1 代码实现 1 代码实现 public class CommandUtil { public static String execuCmd(String cmd) { System.out.println("执行命令[ " + cmd + "]"); Runtime run = Runtime.getRuntime(); try { Process process = run.exec(cmd);
一写代码就开心
2022/08/14
1.4K0
Java并发编程之基础
使用FutureTask可以用泛型指定线程的返回值类型(Runnable的run方法没有返回值)
Java微观世界
2025/01/21
1020
Java并发编程之基础
死磕Juc(一)之CompletableFuture
Future接口定义了操作异步任务执行一些方法,如获取异步任务的执行结果、取消任务的执行、判断任
yuanshuai
2022/08/17
5730
死磕Juc(一)之CompletableFuture
java并发编程(五)
阻塞队列:在某些情况下,会挂起线程,一旦条件满足,被挂起的线程会自动唤醒。而阻塞队列无需关心什么时候阻塞,什么时候唤醒。
疯狂的KK
2020/03/25
3160
相关推荐
java9系列(四)Process API更新
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验