# 获取进程相关的信息
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
## 导入模块
```
import process from '@ohos.process';
```
## 属性
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| egid | number | 是 | 否 | 进程的有效组标识。 |
| euid | number | 是 | 否 | 进程的有效用户身份。 |
| gid | number | 是 | 否 | 进程的组标识。 |
| uid | number | 是 | 否 | 进程的用户标识。 |
| groups | number[] | 是 | 否 | 带有补充组id的数组。 |
| pid | number | 是 | 否 | 当前进程的pid。 |
| ppid | number | 是 | 否 | 当前进程的父进程的pid。 |
| tid8+ | number | 是 | 否 | 当前进程的tid。 |
## ChildProcess
主进程可以获取子进程的标准输入输出,以及发送信号和关闭子进程。
### 属性
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| pid | number | 是 | 否 | 子进程的pid。 |
| ppid | number | 是 | 否 | 子进程的父进程的pid。 |
| exitCode | number | 是 | 否 | 子进程的退出码。 |
| killed | boolean | 是 | 否 | 父进程给子进程发信号是否成功。 |
### wait
wait(): Promise<number>
等待子进程运行结束,返回promise对象,其值为子进程的退出码。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| Promise<number> | 异步返回子进程的退出码。 |
- 示例:
```
var child = process.runCmd('ls');
var result = child.wait();
result.then(val=>{
console.log("result = " + val);
})
```
### getOutput
getOutput(): Promise<Uint8Array>
获取子进程的标准输出。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| Promise<Uint8Array> | 异步返回标准输出的字节流。 |
- 示例:
```
var child = process.runCmd('ls');
var result = child.wait();
child.getOutput.then(val=>{
console.log("child.getOutput = " + val);
})
```
### getErrorOutput
getErrorOutput(): Promise<Uint8Array>
getErrorOutput函数用来获取子进程的标准错误输出。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| Promise<Uint8Array> | 异步返回标准错误输出的字节流。 |
- 示例:
```
var child = process.runCmd('madir test.text');
var result = child.wait();
child.getErrorOutput.then(val=>{
console.log("child.getErrorOutput= " + val);
})
```
### close
close(): void
关闭正在运行的子进程。
- 示例:
```
var child = process.runCmd('sleep 5; ls');
child.close();
```
### kill
kill(signal: number | string): void
kill函数用来发送信号给子进程,结束指定进程。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| signal | number \| string | 是 | 数字或字符串。 |
- 示例:
```
var child = process.runCmd('sleep 5; ls');
child.kill(9);
```
## process.isIsolatedProcess8+
isIsolatedProcess(): boolean
判断进程是否被隔离。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示进程被隔离。 |
- 示例:
```
var result = process.isIsolatedProcess();
```
## process.isAppUid8+
isAppUid(v:number): boolean
判断uid是否属于应用程序。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | number | 是 | 应用程序的uid。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示为应用程序的uid。|
- 示例:
```
var result = process.isAppUid(688);
```
## process.is64Bit8+
is64Bit(): boolean
判断运行环境是否64位。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示为64位环境。 |
- 示例:
```
var ressult = process.is64Bit();
```
## process.getUidForName8+
getUidForName(v:string): number
通过进程名获取进程uid。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | string | 是 | 进程名。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回进程uid。|
- 示例:
```
var pres = process.getUidForName("tool")
```
## process.getThreadPriority8+
getThreadPriority(v:number): number
根据指定的tid获取线程优先级。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | number | 是 | 指定的线程tid。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回线程的优先级。 |
- 示例:
```
var tid = process.getTid();
var pres = process.getThreadPriority(tid);
```
## process.getStartRealtime8+
getStartRealtime() :number
获取从系统启动到进程启动所经过的实时时间(以毫秒为单位)。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的实时时间。|
- 示例:
```
var realtime = process.getStartRealtime();
```
## process.getPastCputime8+
getPastCputime() :number
获取进程启动到当前时间的CPU时间(以毫秒为单位)。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的CPU时间。 |
- 示例:
```
var result = process.getPastCputime() ;
```
## process.getSystemConfig8+
getSystemConfig(name:number): number
获取系统配置信息。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | number | 是 | 指定系统配置参数名。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 返回系统配置信息。 |
- 示例:
```
var _SC_ARG_MAX = 0
var pres = process.getSystemConfig(_SC_ARG_MAX)
```
## process.getEnvironmentVar8+
getEnvironmentVar(name:string): string
用该方法获取环境变量对应的值。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 环境变量名。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| string | 返回环境变量名对应的value。 |
- 示例:
```
var pres = process.getEnvironmentVar("PATH")
```
## process.runCmd
runCmd(command: string, options?: { timeout : number, killSignal :number | string, maxBuffer : number }) : ChildProcess
通过runcmd可以fork一个新的进程来运行一段shell,并返回ChildProcess对象。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| command | string | 是 | shell命令。 |
| options | Object | 否 | 相关选项参数。 |
**表1** options
| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| timeout | number | 否 | 子进程运行的ms数,当子进程运行时间超出此时间,则父进程发送killSignal信号给子进程。timeout默认为0。 |
| killSignal | number \| string | 否 | 子进程运行时间超出timeout时,父进程发送killSignal 信号给子进程。killSignal 默认为'SIGTERM'。 |
| maxBuffer | number | 否 | 子进程标准输入输出的最大缓冲区大小,当超出此大小时则终止子进程。maxBuffer默认1024\*1024。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| [ChildProcess](#childprocess) | 子进程对象。 |
- 示例:
```
var child = process.runCmd('ls', { maxBuffer : 2 });
var result = child.wait();
child.getOutput.then(val=>{
console.log("child.getOutput = " + val);
})
```
## process.abort
abort(): void
该方法会导致进程立即退出并生成一个核心文件,谨慎使用。
- 示例:
```
process.abort();
```
## process.on
on(type: string, listener: EventListener): void
用该方法来存储用户所触发的事件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 存储事件的type。 |
| listener | EventListener | 是 | 回调的事件。 |
**表2** EventListener
| 名称 | 说明 |
| -------- | -------- |
| EventListener = (evt: Object) => void | 用户存储的事件。 |
- 示例:
```
process.on("data", (e)=>{
console.log("data callback");
})
```
## process.off
off(type: string): boolean
用该方法来删除用户存储的事件。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 删除事件的type。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| boolean | 事件是否删除成功。 |
- 示例:
```
process.on("data", (e)=>{
console.log("data callback");
})
var result = process.off("data");
```
## process.exit
exit(code: number): void
用该方法终止程序,谨慎使用。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| code | number | 是 | 进程的退出码。 |
- 示例:
```
process.exit(0);
```
## process.cwd
cwd(): string
用该方法获取进程的工作目录。
- 示例:
```
var path = process.cwd();
```
## process.chdir
chdir(dir: string): void
用该方法更改进程的当前工作目录。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| dir | string | 是 | 路径。 |
- 示例:
```
process.chdir('/system');
```
## process.uptime
uptime(): number
获取当前系统已运行的秒数。
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| number | 当前系统已运行的秒数。 |
- 示例:
```
var time = process.uptime();
```
## process.kill
kill(pid: number,signal: number ): boolean
用该方法发送signal到指定的进程,结束指定进程。
- 参数:
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| pid | number | 是 | 进程的id。 |
| signal | number | 是 | 发送的信号。 |
- 返回值:
| 类型 | 说明 |
| -------- | -------- |
| boolean | 信号是否发送成功。 |
- 示例:
```
var pres = process.pid
var result = that.kill(pres, 28)
```