编辑
2024-10-21
学习记录
00

说明

有时候我们使用java程序的时候需要启动程序或者命令,就可以使用进程类来实现启动外部进程。 例如exe,bat,shell文件或者脚本。

进程类

  • ProcessBuilder.start()
  • Runtime.exec()

不同点

Runtime.exec()可接受一个单独的字符串,这个字符串是通过空格来分隔可执行命令程序和参数的,也可以接受字符串数组参数。

ProcessBuilder.start()只能接收字符串列表或者字符串集合。列表中第一个参数是可执行命令程序,其他的是命令行执行是需要的参数。

相同点

ProcessBuilder.start()Runtime.exec() 方法都被用来创建一个操作系统进程(执行命令行操作),并返回 Process 子类的一个实例

Process类

Java中的Process类是一个抽象类,它表示由操作系统执行的进程。

Process类提供了访问底层操作系统进程的方法和属性。当你在Java程序中创建一个进程(比如通过执行一个系统命令),Java虚拟机会返回一个Process对象的实例,你可以通过这个对象来获取进程的相关信息或控制进程。

Process类提供的主要方法和属性:

获取进程ID(PID):

int getPid(): 返回与此进程关联的本地进程ID。这个方法在Unix系统上有效,但在Windows系统上可能返回0或不支持。

获取进程的退出值:

int exitValue(): 获取进程的退出值。在进程正常运行结束之前调用此方法会导致IllegalThreadStateException。退出值为0通常表示进程成功执行。

销毁进程:

void destroy(): 强制终止进程。在销毁进程之前,调用destroy()方法的线程会尝试正常终止该进程及其所有子进程。如果进程不能终止,该线程会放弃进一步的尝试。

等待进程结束:

int waitFor(): 导致当前线程等待,直到由Process对象表示的进程终止。这个方法返回一个整数,该整数是进程的正常退出值。

int waitFor(long timeout, TimeUnit unit): 导致当前线程等待,直到由Process对象表示的进程终止或超过指定的等待时间。如果在超时前进程终止,则返回进程的退出值;如果超时,则返回0。

获取进程的输入流、输出流和错误流:

InputStream getInputStream(): 获取进程的常规输出流(标准输出)。

OutputStream getOutputStream(): 获取进程的输入流(标准输入)。

InputStream getErrorStream(): 获取进程的错误输出流(标准错误)。

获取进程的环境信息:

Map<String, String> getEnvironment(): 返回与此进程相关的环境变量。这个方法通常返回一个不可修改的映射。

获取进程的类加载器:

ClassLoader getClassLoader(): 返回启动进程的类加载器。这对于了解进程的上下文环境可能很有用。 Process类在Java中主要被用于执行外部程序或脚本,并与它们进行交互。

请注意,处理Process对象时,特别是在读取输出流和错误流时,通常需要确保及时消耗这些流的内容,以避免缓冲区满导致进程挂起。

编辑
2024-10-21
学习记录
00

ubuntu安装包是deb格式,或者appImage文件

deb安装

安装命令

sudo dpkg -i 文件名.deb

如果在安装过程中出现依赖问题,可以运行命令来自动修复。

sudo apt-get install -f

另外,从Ubuntu 16.04开始,apt命令也提供了对本地.deb文件的支持。可以使用以下命令来安装.deb文件并自动处理依赖问题

sudo apt install ./文件名.deb

appImage安装

授权

sudo chmod u+x 文件名.AppImage

运行

双击打开

或者

./aplicacion.AppImage
编辑
2024-10-19
遇到的问题
00

前提

新电脑到手需要验机,如果联网就不能退货了,但是Windows11开机启动又是强制联网的

步骤

先到wifi链接界面按shift+F10,会弹出命令行界面输入oobe\bypassnro

会回到开始界面,按系统提示步骤炒作即可

编辑
2024-10-18
遇到的问题
00

前提

火狐自动更新后打不开网页,网络链接没问题

提示

呃…找不到此网站。 我们无法连接至 support.mozilla.org 的服务器。 若您确认输入的是正确网址,可以: 稍后再试 检查您的网络连接 检查 Firefox 是否有联网权限(可能已接入网络,但被防火墙阻止)

解决

ping一下8.8.8.8先测试网络链接

可能是网络解析问题 先查看域名配置文件 cat /etc/resolv.conf

如果nameserver 显示127.0.0.*就需要修改

sudo gedit /etc/resolv.conf

nameserver映射为8.8.8.8

编辑
2024-10-18
遇到的问题
00

low-menory出现说明ideajvm的内存不足

解决

在idea进行内存增加配置

Mermaid
graph LR A[IDEA主界面] --> B[Help] -->C[Change Memory Setting]-->D[输入配置的内存大小]