java 可以调用操作系统上可以执行的命令
调用方式一:
Process process = Runtime.getRuntime().exec(new String []{"ping","127.0.0.1" }, null,null);
.exec方法:
public Process exec(String cmdarray[], String[] envp, File dir)
参数: cmdarray 命令及参数组成的数组:可执行的命令字符串,用空格分隔而生成的数组
envp 每一个元素为一个环境变量,每个元素格式 :变量名=变量值
dir 指定子进程的工作目录
实际是调用 ProcessBuilder 实现的,源码:
public Process exec(String[] cmdarray, String[] envp, File dir) throws IOException { return new ProcessBuilder(cmdarray) .environment(envp) .directory(dir) .start(); }
调用方式二:
ProcessBuilder processBuilder = new ProcessBuilder(List<String> command);//命令及参数组成LIST
processBuilder.environment().put("变量名","变量值");//设置环境变量
processBuilder.directory("工作目录");//指定子进程的工作目录
processBuilder.start();//启动子进程。
上面两种方式,创建一个本机进程来执行命令,并返回 Process
子类的一个实例,表示执行命令的进程。
Process
方法:
abstract void |
destroy() 杀掉子进程。 |
abstract int |
exitValue() 返回子进程的退出代码。 0正常结束 |
abstract InputStream |
getErrorStream() 获取子进程的标准错误流(stderr)。 |
abstract InputStream |
getInputStream() 获取子进程的标准输入流(stdout )。 |
abstract OutputStream |
getOutputStream() 获取子进程的标准输出流(stdin)。 |
abstract int |
waitFor() 导致当前线程等待,一直要等到由该 Process 对象表示的进程已经终止。并返回进程的退出代码, 0正常结束。 |
某些平台为进程的输出流提供有限的缓冲区大小,当缓冲区满时,可能导至进程阻塞甚至死锁。
因此即使不需要进程的输出,最好也把输出流读出来,避免缓冲区满导至进程阻塞。
Process 使用的方式:
1.读取标准输出流和标准错误输出流
2.调用waitFor 方法等待进程结束,并获得进程退出码,根据退出码判读进程是否正常结束。
相关推荐
1. 调用execve系统调用函数:在shell命令行提示符后输入命令 `$ ./hello`,shell进程会调用fork函数来创建一个新的进程,然后调用execve函数来加载可执行文件。execve函数的原型形式如下:`int execve(char *...
在IT领域,特别是对于那些与IBM i(原AS/400)系统打交道的专业人士而言,掌握一套核心的操作命令是必不可少的技能。AS/400,即IBM i系列服务器,自上世纪90年代推出以来,一直是商业计算、数据处理和事务处理的强大...
例如,在执行命令过程中,系统经常会提示用户进行下一步的操作,其命令行提示的各种特殊符号的含义如下。 * 在命令行“ [ ]” 符号中有以“ /” 符号隔开的内容:表示该命令中可执行的各个选项。 * 某些命令提示的...
1. **命令解释器**:命令解释器是操作系统的一部分,它接收用户的输入,解析成可执行的指令,然后传递给内核执行。myshell是一个用户级别的命令解释器,类似于Linux系统中的bash或者Windows的cmd.exe。 2. **输入/...
批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。批处理文件可以将多个命令组合成一个文件,以便于简化命令的输入和提高工作效率。 批处理内部命令 1. REM命令:REM命令是批处理...
doit 和 luo_excv 可能是编译后的可执行文件,用于实际测试和运行命令解释程序。 通过完成这样的实验,学生不仅能学习到C++编程,还能深入理解操作系统底层工作原理,提升解决问题的能力,为未来从事系统级编程打下...
命令解析器是操作系统用户界面的核心部分,它接收用户的输入,解析成可执行的操作和参数。简单来说,它的主要任务包括分词(tokenization)、语法分析(parsing)和命令执行。首先,解析器将用户输入的字符串分解成...
本文将详细介绍三菱PLC(Programmable Logic Controller,可编程逻辑控制器)中的各种命令及其使用方法,特别聚焦于MELSEC Q系列PLC。MELSEC Q系列是三菱电机推出的一款高性能PLC产品线,适用于复杂的自动化控制系统...
在三菱PLC编程中,可调用鼠标的特性是一项实用的功能,它允许用户通过编程来控制和模拟鼠标的动作,从而提升自动化系统的交互性和效率。这项技术主要应用于那些需要复杂人机交互或图形界面的工业应用中,比如工厂...
这意味着当用户输入的命令不是内部命令时,命令解释器将尝试在系统路径中查找可执行文件并运行。 开发环境包括Oracle VM VirtualBox虚拟机、Oracle Linux 6.5操作系统、vim编辑器以及gcc编译器。实验步骤涉及使用...
4. **命令执行与进程创建**: 在C++中,可以使用`fork()`和`exec()`系列函数来创建新的进程并执行命令。`fork()`创建子进程,`exec()`则在子进程中加载新的程序。理解这些系统调用的工作机制是实现命令解析器的关键。...
【描述】:本文将详细介绍如何在iFix(Intellution iFix)这种SCADA(数据采集与监视控制)系统中直接调用外部exe可执行文件,以实现更丰富的功能集成。 【标签】:SCADA系统,iFix,exe调用 【正文】: 在工业自动...
- 使用`gcc`将`main.c`和`stack.c`编译成名为`stack`的可执行文件: ```bash gcc main.c stack.c -o stack ``` - **运行程序**: - 执行编译后的程序,输出结果应为: ```bash ./stack ``` - 预期输出: ...
- **发送命令**:向 MATLAB 发送命令字符串以执行特定操作。 - **读取/写入数据**:从 MATLAB 环境中读取数据或将数据写入 MATLAB。 #### 三、配置编译器 为了在 VS2008 中成功调用 MATLAB 引擎,需要进行一系列的...
在IT领域,shell是操作系统提供的一种用户界面,用于与内核交互,执行命令、管理文件系统等。在本项目中,我们关注的是“myshell”的实现,这是一个简化版的shell程序,具有基本的命令处理能力,例如改变工作目录...
在各高速扫描周期内,按照主图-子图-孙图的分级构成顺序执行 H 图的梯形图命令。 上述方法为执行运动程序的准备工作。在嵌入 MSEE 命令的时刻,不启动运动程序。嵌入 MSEE 命令并通过 控制信号将程序运行启动...
它提供了一个命令行界面,用户可以通过输入特定的命令来执行各种操作,如文件管理、磁盘操作、程序运行等。本篇文章将深入探讨DOS命令的详细知识,帮助你全面理解和掌握这个经典的操作系统。 1. **基本操作命令** ...
例如,使用`start`命令启动应用程序,或者直接调用可执行文件名如`notepad.exe`来打开记事本。 2. **命令行接口(CLI)调用** 在大多数操作系统中,通过命令行接口(CLI)可以运行外部程序。例如,在Unix/Linux...
最后,"执行命令"是调用操作系统内核的服务,通过`exec()`系列函数来启动一个新的进程执行命令。`exec()`函数会替换当前进程的映像,使得进程开始执行新的程序。如果命令带有参数,这些参数需要通过`exec()`函数传递...