【常用知识点-Java】启动新进程

Author:赵志乾
Date:2024-07-05
Declaration:All Right Reserved!!!

1. 简介

        Java内启动一个外部进程(操作系统级别的进程),通常使用ProcessBuilder类。其可以方便、灵活地启动和管理子进程,并且可以为子进程设置环境变量、工作目录以及将输入传给子进程,并捕获其输出。

2. 代码示例

//*********************核心字段************************ 
// 子进程
private Process process;
// 子进程工作目录
private final File workDirectory = new File("/app/");//*********************核心方法************************
public synchronized boolean start(String traceId) {// step1: 若子进程已启动,则先终止子进程if (process!= null && process.isAlive()) {process.destroy();process= null;}// step2: 依据操作系统类型选择不同的启动命令String osName = System.getProperty("os.name").toLowerCase();ProcessBuilder processBuilder;if (osName.contains("win")) {processBuilder = new ProcessBuilder("java.exe", "-cp", "\"demo.jar;lib/*;\"", "Main", "traceId=" + traceId);} else if (osName.contains("nix") || osName.contains("nux") || osName.contains("aix")) {processBuilder = new ProcessBuilder("java", "-cp", "\"demo.jar:lib/*:\"", "Main", "traceId=" + traceId);} else {return false;}// step3: 设置子进程工作目录processBuilder.directory(workDirectory);// step4: 启动子进程try {simulatorProcess = processBuilder.start();return true;} catch (IOException e) {throw new RuntimeException(e);}
}

3. 应用场景

        通过webApi控制服务器上某些进程的启停:使用SpringBoot搭建Web服务,对外暴漏接口,请求处理逻辑按需要控制进程启停;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/866590.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每天一个数据分析题(四百十一)- 主成分

在实际应用中,若研究单个指标的方差对结果的影响,在做主成分析的时候应该选择使用( ) A. 协方差矩阵 B. 原始变量构成的矩阵 C. 关联矩阵 D. 其余三者皆可 数据分析认证考试介绍:点击进入 题目来源于CDA模拟题库…

加速度传感器信号处理注意事项

1 传感器分类 对于压电式压力传感器而言,输出信号是最重要的选择标准之一。压电式压力传感器与电子电路相连,电子电路将传感器产生的电荷成比例转换为电压。 如果选用外部设备(电荷放大器)充当电子元件,则称其为电…

Mojolicious配置全解:深入探索Web应用的设置秘诀

Mojolicious配置全解:深入探索Web应用的设置秘诀 Mojolicious是一个功能丰富的Perl Web开发框架,它提供了一种简单而强大的方法来构建和配置Web应用。Mojolicious的配置文件是应用配置的核心,包含了应用的行为和运行时设置。本文将详细解释M…

Spark SQL----内置函数String Functions

Spark SQL----内置函数String Functions String Functions 例子: -- ascii SELECT ascii(222); ---------- |ascii(222)| ---------- | 50| ----------SELECT ascii(2); -------- |ascii(2)| -------- | 50| ---------- base64 SELECT base64(Spark SQ…

JavaScript 正则表达式:标准的KAFKA GROUP_ID 和 TOPIC 的格式限制

KAFKA TOPIC格式,只允许使用字母、数字、英文句点.、下划线_、中划线-、分号;、冒号: 注意:** -前面要加\转义** /^[a-zA-Z0-9_.\-;:]$/KAFKA GROUP_ID格式限制为3-128个字符,只能包含数字、字母、下划线、中划线和点,且至少包含…

【毛发教程】使用 Maya、XGen 和虚幻引擎创建马尾辫发型

Malte Resenberger-Loosmann是国外一名首席艺术家,他负责指导整个艺术部门来制作独立游戏项目中的3D建模。在本文中,Loosmann展示了马尾辫发型背后的工作流程,分享了 Maya 和虚幻引擎中的场景设置,并解释了 GS CurveTools 如何帮助…

SQLSERVER 有哪些关键字不能作为字段需要注意的

今天遇到一个错误: 2024-07-05 08:42:33.150 ERROR 8220 --- [io-17001-exec-1] c.alibaba.druid.filter.stat.StatFilter : merge sql error, dbType sqlserver, druid-1.1.21, sql : SELECT dydm,dymc,byzd1,byzd3,byzd4,in_date,out,out_date FROM dianyuan WHE…

Linux 查看修改系统时间| date -s

Linux 查看修改系统时间 date 命令的介绍date基本语法date命令使用示例显示指定条件的时间设置指定条件的时间时间加减操作显示文件最后修改时间显示 UTC 时间 备注 date 命令的介绍 date 命令在 Linux/Unix 系统上的使用。 date 命令可以用于查看和设置系统时间。 date基本语…

基于IIS的Windows系统Django项目本地部署

参考: 1. 基于Windows平台的Django本地部署和腾讯云服务器上部署(1)_如何在服务器上发布部署django程序 csdn-CSDN博客 2.Windows server iis部署Django详细操作 - Django中文 - 博客园 (cnblogs.com) 3.在IIS中部署pythonDjango项目时出…

Python: 分块读取文本文件

在处理大文件时,逐行或分块读取文件是很常见的需求。下面是几种常见的方法,用于在 Python 中分块读取文本文件: 1、问题背景 如何分块读取一个较大的文本文件,并提取出特定的信息? 问题描述: fopen(blank.txt,r) quot…

使用任意电脑通过内网穿透生成的公网地址远程SSH连接本地Windows电脑

文章目录 前言1. Windows安装SSH服务2. Windows本地连接测试3. Windows安装Cpolar工具4. 配置SSH公网地址5. 远程SSH 连接测试6. 固定SSH公网地址7. 固定SSH地址测试 前言 在当今的数字化转型时代,远程连接和管理计算机已成为日常工作中不可或缺的一部分。对于Wind…

Warning message:package ‘ggplot2’ is not available (for R version 3.2.3)

install.packages(ggplot2) Installing package into ‘/usr/local/lib/R/site-library’ (as ‘lib’ is unspecified) Warning message: package ‘ggplot2’ is not available (for R version 3.2.3) 根据你提供的信息,警告消息表明在你的R版本(3.2.3…

微信小程序留言板1

wxml&#xff1a; <view class"view2"> <text class"test1">留言&#xff1a;</text><input type"text" class"input1" bindinput"ipt"/><button class"btn" bindtap"btn"…

spring mvc学习

第四章 Spring MVC 第一节 Spring MVC 简介 1. Spring MVC SpringMVC是一个Java 开源框架&#xff0c; 是Spring Framework生态中的一个独立模块&#xff0c;它基于 Spring 实现了Web MVC&#xff08;数据、业务与展现&#xff09;设计模式的请求驱动类型的轻量级Web框架&am…

重要性采样求泊松分布期望

我也不是数值模拟或者统计物理的学生。所以蒙特卡洛之类的概念性的东西也说的不好。下面是我的统计物理的期末作业。关于用重要性分布求离散函数泊松分布的数学期望的。 我觉得这个挺有意思的&#xff0c;所以也花了点时间加上chatgpt折腾了一下&#xff0c;提供一个参考吧&…

CatBoost原生接口和Sklearn接口参数详解

CatBoost原生接口和Sklearn接口参数详解 LightGBM原生接口和Sklearn接口参数详解XGBoost原生接口和Sklearn接口参数详解CatBoost一、Sklearn风格接口CatBoostRegressor参数CatBoostRegressor.fit参数CatBoostRegressor.predict参数 二、Catboost原生接口CatBoost PoolCatBoost可…

「媒体邀约」全国巡演,多地推介会,如何做好媒体宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体宣传加速季&#xff0c;100万补贴享不停&#xff0c;一手媒体资源&#xff0c;全国100城线下落地执行。详情请联系胡老师。 我们在做多地活动的时候&#xff0c;比如演唱会&#xff…

【LeetCode】十一、滑动窗口:长度最小的子数组 + 定长子串的元音最大数目

文章目录 1、滑动窗口2、leetcode209&#xff1a;长度最小的子数组3、leetcode1456&#xff1a;定长子串中元音的最大数目 1、滑动窗口 如下&#xff0c;有一个数组&#xff0c;现三个元素为一组&#xff0c;求最大的和&#xff0c;自然可以while循环实现&#xff1a;i 、i1、…

数据结构(Java):迭代器遍历【底层源码解析】

1、引言 我们知道&#xff0c;对于List系列集合&#xff0c;添加的元素是有序、可重复、有索引的&#xff1b;而对于Set系列集合&#xff0c;添加的元素是无序、不重复、无索引的。 那么使用for循环通过下标来对Set系列集合进行遍历&#xff0c;那显然是不行的。 迭代器就可…

Spring的AOP概念详解

AOP详解&#xff1a; 1.介绍&#xff1a; 面向切面编程&#xff0c;是一种将非业务代码与业务代码进行分离的一种思想&#xff0c;在实际开发中,往往有许多重复操作,例如事务提交,权限验证,保存口志等功能需要在业务代码重复调用&#xff0c;面向切面编程,就是将非业务代码进…