文档章节

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

囚兔
 囚兔
发布于 2016/10/09 18:13
字数 184
阅读 1037
收藏 0

Java代码:

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脚本:

#!/bin/sh

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

执行:

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得返回码

© 著作权归作者所有

囚兔

囚兔

粉丝 40
博文 92
码字总数 51550
作品 1
南京
程序员
私信 提问
Java程序运行、停止Shell脚本

碰到这样一个问题——用Java程序来控制shell脚本的运行和停止。具体来讲,这个Java程序至少要有三个功能: 运行Shell脚本; 等待Shell脚本执行结束; 停止运行中的Shell程序; 从功能需求来看...

laigous
2015/11/17
1K
1
[实践] Android源码 - 阻止APP被长按HOME键方式结束掉

[实践] Android源码 - 阻止APP被长按HOME键方式结束掉 @(Android研究)[阻止APP被系统结束] [TOC] 前言 实践 理论部分可以看我的文章:Android5.1.1源码 - 分析在最近的APP列表中清理APP的过...

i不歪
2015/11/11
62
0
跟我学习dubbo-在Linux操作系统上手工部署Dubbo服务(5)

在Linux操作系统上手工部署Dubbo服务 1、环境变量配置 Java环境变量----只需要JRE vi /etc/profile ## java env export JAVA_HOME=/usr/local/java/jdk1.7.0_72 export JRE_HOME=$JAVA_HOME......

HI曲奇饼干
2016/01/09
153
1
Linux下java报错Too many open files的解决方法

最近发现运行在Linux下的java application报如下错误:

voole
06/06
116
0
Tomcat进程意外退出的问题分析

节前某个部门的测试环境反馈tomcat会意外退出,我们到实际环境排查后发现不是jvm crash,日志里有进程销毁的记录,从pause到destory的整个过程: org.apache.coyote.AbstractProtocol pause...

陶邦仁
2015/03/24
195
1

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
7
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部