确保Runtime.getRuntime().exec()执行结束再执行下一步

JAVA外部程序调用(Runtime.getRuntime().exec) 阅读详情

Runtime.getRuntime().exec()是一个很有用的函数,可以调用操作系统的shell指令。

但是这个函数有一个问题,当它把传给它的控制台命令丢给shell执行后,它就立即返回了。

 

这个问题看起来不大,但是如果我们用shell指令复制一个A文件到B文件,然后在下一语句中对B文件进行操作,那么问题就来了。因为shell指令很可能还没有执行完(而exec( )函数却已经返回了),也就是说B文件可能还没有,或者B文件可能还在复制中,那么你这个时候对B文件进行操作的结果肯定是灾难性的。

 

那么如果确保Runtime.getRuntime().exec()执行结束再执行下一步呢,注意到Runtime.exec()指令返回了一个Process对象,而这个对象有一个方法waitFor(),而这就是解决方法,具体是怎样去查查API吧

Runtime.getRuntime().exec()执行一连串命令阻塞解决 现附上我运行通过的一段代码:     import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.InputStream; import java.io.I 阅读详情

相关推荐

调用Runtime.getRuntime().exec()执行Linux脚本防挂死和返回脚本输出

调用Runtime.getRuntime().exec()执行Linux脚本防挂死和返回脚本输出

My Blog 9324

Runtime.getRuntime().exec详解

Runtime.getRuntime().exec 用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能和windows“运行”类似。

qq1091606981的专栏 1万+

VPI与Matlab协同仿真:相干光通信接收端DSP算法全解析

本文详细解析了如何利用VPI与Matlab协同仿真,构建完整的相干光通信接收端DSP算法处理闭环。重点介绍了从VPI导出数据后,在Matlab中实现时钟恢复、偏振解复用和载波相位估计等核心算法的步骤与原理,并阐述了如何通过误码率计算完成仿真验证,为相干光通信系统算法研究与验证提供了高效实用的方法。

ll5678的博客 610

Runtime.getRuntime().exec()方法

1.使用Runtime.getRuntime().exec()方法 sshUtil.java package com.demo; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.Session; import

chaochao2113的博客 3万+

开源实战 | 基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程

本文详细介绍了基于SolidWorks与Matlab的并联索驱机器人轨迹规划全流程,涵盖从基础概念到实战技巧的各个环节。通过SolidWorks建模、Matlab运动学实现及轨迹优化策略,展示了如何实现高精度轨迹规划,适用于摄影、医疗等领域的机器人应用。

weixin_28331555的博客 403

MySQL等保三级合规实践:如何安全配置root账户的本地与受信主机登录策略

本文详细介绍了MySQL在等保三级合规框架下如何安全配置root账户的本地与受信主机登录策略。通过分析root账户的特殊保护需求,提供三种安全加固方案,包括限制访问范围、限定登录IP和完全禁止远程登录,并指导创建安全的远程管理账户。文章还涵盖了密码策略强化、日志审计配置和网络层防护等关键合规要求,帮助用户实现MySQL的等保三级全面合规。

weixin_42522964的博客 259

Runtime.getRuntime().exec

用Java编写应用时,有时需要在程序中调用另一个现成的可执行程序或系统命令,这时可以通过组合使用Java提供的Runtime类和Process类的方法实现。下面是一种比较典型的程序模式:    ...    Process  process   =   Runtime.getRuntime().exec(".//p.exe ");    process.waitfor(   );

楷楷的博客 1979

Seedance2.5本地部署指南:从环境配置到生产优化的完整实践

在 AI 内容生成领域,本地部署方案正逐渐成为开发者和技术团队关注的焦点。Seedance2.5 作为一款支持图像和视频生成的 AI 工具,其完全离线运行的能力解决了云端服务在数据隐私、使用成本和访问稳定性方面的痛点。对于需要处理敏感内容、频繁生成素材或希望完全掌控生成流程的技术人员来说,掌握本地部署方法具有实际价值。 本文将以 Seedance2.5 的本地部署为例,详细介绍从环境准备、依赖配置到运行验证的完整流程,同时深入分析关键参数配置、常见问题排查方法以及生产环境下的优化建议。通过实际部署过程,理解

weixin_33139275的博客 731

Runtime.getRuntime().exec方法

Runtime.getRuntime().exec()方法主要用于执行外部的程序或命令。 Runtime.getRuntime().exec共有六个重载方法: public Process exec(String command) 在单独的进程中执行指定的字符串命令。 public Process exec(String [] cmdArray) 在单独的进程中...

diaoyu6664的博客 1103

Android 14密钥管理深度解析:从Keystore到Keymint的架构演进与Trusty安全实践

本文深入解析Android 14密钥管理系统的架构演进,从Keystore到Keymint的技术升级,以及Trusty安全环境的最佳实践。详细探讨了Keystore2的性能优化、Keymint的标准化设计,以及如何在Trusty TEE中实现安全密钥管理,为开发者提供构建现代密钥管理系统的实用指南。

weixin_42533120的博客 263

npm报错 npm WARN deprecated....的问题解决方式

报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i.

任聪聪的博客 16万+

java调用外部程序(Runtime.getRuntime().exec)详解

参考:https://blog.csdn.net/tiantang_1986/article/details/51219916 ​ https://blog.csdn.net/km_moon/article/details/84751792 概述 Runtime.getRuntime().exec 用于调用外部可执行程序或系统命令,并重定向外部程序的标准输入、标准输出和标准错误到缓冲池。功能和windows“运行”类似。 格式: Process process = Runtime.getRuntime(

墨鸦的博客 3万+

核磁共振常用的文件格式介绍:NIfTI volume 格式 (*.nii), GIFTI 格式 (*.gii), CIFTI 格式 (*.nii)

NIfTI volume 格式 (*.nii)GIFTI 格式 (*.gii)CIFTI 格式 (*.nii)Scene file文件 (*.scene)规格文件 (*.spec)解剖 (*.annot)一个场景文件包含一个或多个场景;每个场景实际上是保存时 wb_view 内部状态的快照。这包括有关加载哪些文件、如何显示、如何配置选项卡的信息(选择了哪些表面、在每个层中选择了哪些文件、打开了哪些层、哪些视图旋转、调色板设置、平铺选项卡等),以及在它们上面添加了哪些注释(文本、箭头、圆圈等)。

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 3043

Java Runtime.getRuntime().exec()执行linux脚本

Java Runtime.getRuntime().exec()执行linux脚本 相关文章链接: linux系统配置(cpu、内存、磁盘等) 观前提示: 本文所使用的IDEA版本为ultimate 2019.1,JDK版本为1.8.0_141,Linux版本为CentOS release 6.10。 最近,在使用Java调用linux命令查询系统信息时发现,执行一些简单的脚步没有问题,但是稍微复杂的脚本变执行失败了。在百度了之后,发现加上 String[] cmd = new String[]{"s

weixin_43611145的博客 4462

摆脱英文束缚!群晖Transmission4.0.4全新中文界面攻略

在群晖安装完官方Transmission4.0.4套件后,界面是英文状态的,不太好用。但是按照网上分享的原来4.0以前版本的方法更新UI又失败,所以自己搞了下成功了,分享给需要的朋友。

XiaoqiangClub的博客 5214

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android Runtime.getRuntime().exec()

getRuntimeRuntime.getRuntime().exec共有六个重载方法:public Process exec(String command)public Process exec(String [] cmdArray)public Process exec(String command, String [] envp)public Process exec(String [] cmdArray, String [] envp)public Process exec(String comma

xianrenli38的博客 7806

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

关于Runtime.getRuntime().exec()的使用和讲解

自己学习Runtime.getRuntime().exec()之后明白其用法,但是总结不出它的功能,在查阅网上资料找到一个比较通俗易懂且全面的答案:在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。 如果我们想在500秒后使电脑关机则需要在运行中输入 cmd ,打开命令弹框中输入: //添加一个60S后自动关闭计算机的计划。 shutdown -s -t 500 通过Runtime.getRuntime().exec()我们可以这样写 //

qq_40474507的博客 2万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java的Runtime、Process类介绍及Runtime.getRuntime().exec方法的使用及问题

1. Runtime的定义 Runtime类是单实例的,每个Java应用程序都有一个该类的实例,它允许应用程序和运行应用程序的环境进行交互。可使用getRuntime方法获取该类的实例。 2. 常用方法 方法 作用 getRuntime():Runtime 返回与当前Java应用程序关联的运行时对象。 exec(String):Process 在单独的进程中执行指定的字符串命令...

qq_29550537的博客 1万+

Java Runtime.getRuntime().exec 不执行

Java Runtime.getRuntime().exec 不执行 在linux服务器上用java调用脚本,直接写 Java Runtime.getRuntime().exec(“要执行的命令”)有时候发现并不能执行响应的命令。 原因 这是因为linux执行命令需要使用linux系统自带的sh工具,而java虚拟机有时候并不能获取到系统的环境变量,导致命令无法被执行 解决方法 在命令前加上 /b...

王者丶丿风范 1万+

关于Runtime.getRuntime().exec()产生阻塞的2个陷阱

本文来自网易云社区背景相信做java服务端开发的童鞋,经常会遇到Java应用调用外部命令启动一些新进程来执行一些操作的场景,这时候就会使用到Runtime.getRuntime().exec(),然而这个方法如果不谨慎很容易掉进陷阱。我们的一个PDF转码服务就踩到了这个坑掉进陷阱,这个转码服务主要是对pdf进行加密和转码成swf。这个服务上线后大部分时间都是稳定运行的,但是隔一段时间就会死掉,然后...

weixin_34408624的博客 1万+

命令执行之RunTime.getRuntime().exec()

在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。 用法: public Process exec(String command)-----在单独的进程中执行指定的字符串命令。 public Process exec(String [] cmdArray)---在单独的进程中执行指定命令和变量 public Process exec(String command, String [] envp)----在指定环境的独立进...

qq_41989372的博客 6736

关于两个在java中使用Runtime.getRuntime().exec执行linux命令时报错或没反应问题的解决

前言 最近在做JavaWeb项目的过程中,前端执行一些事件需要用java调用云端linux的命令,我按照网上的方法弄,发现要么执行命令没反应,要么遇上特殊字符报错。查阅了很久,终于自个解决了,写下来以防忘记。 一、使用Runtime.getRuntime().exec执行linux命令没反应 1、直接使用Runtime.getRuntime().exec(String cmd)时不支持空白符和管道...

夜风灵波的博客 1万+

Runtime.getRuntime().exec()

java中用Runtime.getRuntime().exec() 调用外部程序, 获取"标准输出流", 老是阻塞. 在网上找了找, 觉得应该是"错误输出流"的问题. 果然, 为"错误输出流"单开一个线程读取之, "标准输出流"就不再阻塞了. 源码如下:   [java:showcolumns] view plaincopy ·········10····

6994

Runtime.getRuntime().exec执行阻塞问题解决

上篇博文中CallMaxentThreadPoolTask类直接使用Runtime.getRuntime().exec方法调用cmd命令,结果今天在测试时发现当cmd命令执行 出现错误或警告时,主控程序的waitfor方法会被阻塞一直等待下去,查了查资料发现是Runtime.getRuntime().exec方法需要自己处理stderr 及stdout流,而解决方法即是将它们导出用别的thread处理。 会造成阻塞的代码: Process p = Runtime.getRuntime().exec

熊崽Kevin 3万+

windows平台 Runtime.getRuntime().exec() 指定路径无效的问题

近日来项目中需要用程序调用外部的脚本来执行第三方的一些功能应用。于是,第一时间想起了使用Runtime.getRuntime().exec() 来调用脚本。在使用过程中,发现第三方的应用虽然可以通过参数传递配置文件的名字,但是却只能读和它同一目录的配置文件,不支持参数中带有路径的用法。基于这第一点,第一反应是,用exec的重构方法指定工作目录来解决,于是,写下了如下的命令 Runtime.getRuntime.exec("pshell.sh -config config.xml",null,new F..

oarsman的专栏 5475
上一篇: 关于synchronized关键字的那些事儿
下一篇: java中获得文件流的两种方法
matrixdwy
博客等级 码龄19年 14粉丝 52原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值