js-apis-process.md 12.7 KB
Newer Older
Z
zengyawen 已提交
1
# 获取进程相关的信息
Z
zengyawen 已提交
2

Z
zengyawen 已提交
3 4
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
Z
zengyawen 已提交
5

Z
zengyawen 已提交
6 7

## 导入模块
Z
zengyawen 已提交
8 9 10 11 12

```
import process from '@ohos.process';
```

Z
zengyawen 已提交
13 14 15

## 属性

Z
zengyawen 已提交
16 17
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang。

Z
zengyawen 已提交
18 19
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
20 21 22
| egid | number | 是 | 否 | 进程的有效组标识。该接口为系统接口,三方应用不支持调用。 |
| euid | number | 是 | 否 | 进程的有效用户身份。该接口为系统接口,三方应用不支持调用。 |
| gid | number | 是 | 否 | 进程的组标识。该接口为系统接口,三方应用不支持调用。 |
Z
zengyawen 已提交
23
| uid | number | 是 | 否 | 进程的用户标识。 |
24
| groups | number[] | 是 | 否 | 带有补充组id的数组。该接口为系统接口,三方应用不支持调用。 |
Z
zengyawen 已提交
25
| pid | number | 是 | 否 | 当前进程的pid。 |
26
| ppid | number | 是 | 否 | 当前进程的父进程的pid。该接口为系统接口,三方应用不支持调用。 |
Z
zengyawen 已提交
27
| tid<sup>8+</sup> | number | 是 | 否 | 当前进程的tid。 |
Z
zengyawen 已提交
28 29 30


## ChildProcess
Z
zengyawen 已提交
31 32 33 34

主进程可以获取子进程的标准输入输出,以及发送信号和关闭子进程。


Z
zengyawen 已提交
35
### 属性
Z
zengyawen 已提交
36

Z
zengyawen 已提交
37 38
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang。

Z
zengyawen 已提交
39 40
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
41 42 43 44
| pid | number | 是 | 否 | 子进程的pid。该接口为系统接口,三方应用不支持调用。 |
| ppid | number | 是 | 否 | 子进程的父进程的pid。该接口为系统接口,三方应用不支持调用。 |
| exitCode | number | 是 | 否 | 子进程的退出码。该接口为系统接口,三方应用不支持调用。 |
| killed | boolean | 是 | 否 | 父进程给子进程发信号是否成功。该接口为系统接口,三方应用不支持调用。 |
Z
zengyawen 已提交
45 46


Z
zengyawen 已提交
47
### wait
Z
zengyawen 已提交
48

Z
zengyawen 已提交
49
wait(): Promise&lt;number&gt;
Z
zengyawen 已提交
50

Z
zengyawen 已提交
51
等待子进程运行结束,返回promise对象,其值为子进程的退出码。
Z
zengyawen 已提交
52

53 54
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
55 56
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
57 58 59 60 61
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;number&gt; | 异步返回子进程的退出码。 |
Z
zengyawen 已提交
62

Z
zengyawen 已提交
63 64
**示例:**

65
```js
Z
zengyawen 已提交
66 67 68 69 70 71
var child = process.runCmd('ls');
var result = child.wait();
result.then(val=>{
    console.log("result = " + val);
})
```
Z
zengyawen 已提交
72 73


Z
zengyawen 已提交
74
### getOutput
Z
zengyawen 已提交
75

Z
zengyawen 已提交
76 77 78
getOutput(): Promise&lt;Uint8Array&gt;

获取子进程的标准输出。
Z
zengyawen 已提交
79

80 81
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
82 83
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
84
**返回值:**
Z
zengyawen 已提交
85

Z
zengyawen 已提交
86 87 88 89 90 91
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Uint8Array&gt; | 异步返回标准输出的字节流。 |

**示例:**

92
```js
Z
zengyawen 已提交
93 94
var child = process.runCmd('ls');
var result = child.wait();
S
shikai-123 已提交
95
child.getOutput().then(val=>{
Z
zengyawen 已提交
96 97 98
    console.log("child.getOutput = " + val);
})
```
Z
zengyawen 已提交
99 100


Z
zengyawen 已提交
101
### getErrorOutput
Z
zengyawen 已提交
102

Z
zengyawen 已提交
103
getErrorOutput(): Promise&lt;Uint8Array&gt;
Z
zengyawen 已提交
104

Z
zengyawen 已提交
105 106
获取子进程的标准错误输出。

107 108
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
109
**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
110

Z
zengyawen 已提交
111 112 113 114 115
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Uint8Array&gt; | 异步返回标准错误输出的字节流。 |
Z
zengyawen 已提交
116

Z
zengyawen 已提交
117 118
**示例:**

119
```js
Z
zengyawen 已提交
120 121
var child = process.runCmd('madir test.text');
var result = child.wait();
S
shikai-123 已提交
122
child.getErrorOutput().then(val=>{
Z
zengyawen 已提交
123 124 125
    console.log("child.getErrorOutput= " + val);
})
```
Z
zengyawen 已提交
126 127


Z
zengyawen 已提交
128
### close
Z
zengyawen 已提交
129

X
xdmal 已提交
130
close(): void
Z
zengyawen 已提交
131

Z
zengyawen 已提交
132
关闭正在运行的子进程。
Z
zengyawen 已提交
133

134 135
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
136 137
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
138 139
**示例:**

140
```js
Z
zengyawen 已提交
141 142 143
var child = process.runCmd('sleep 5; ls');
child.close();
```
Z
zengyawen 已提交
144 145


Z
zengyawen 已提交
146
### kill
Z
zengyawen 已提交
147

Z
zengyawen 已提交
148
kill(signal: number | string): void
Z
zengyawen 已提交
149

Z
zengyawen 已提交
150 151
用于发送信号给子进程,结束指定进程。

152 153
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
154
**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
155

Z
zengyawen 已提交
156 157 158 159 160
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| signal | number&nbsp;\|&nbsp;string | 是 | 数字或字符串。 |
Z
zengyawen 已提交
161

Z
zengyawen 已提交
162 163
**示例:**

164
```js
Z
zengyawen 已提交
165 166 167
var child = process.runCmd('sleep 5; ls');
child.kill(9);
```
Z
zengyawen 已提交
168 169


Z
zengyawen 已提交
170 171 172 173
## process.isIsolatedProcess<sup>8+</sup>

isIsolatedProcess(): boolean

174
判断进程是否被隔离。
Z
zengyawen 已提交
175

Z
zengyawen 已提交
176 177
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
178
**返回值:**
Z
zengyawen 已提交
179

Z
zengyawen 已提交
180 181 182 183 184 185
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示进程被隔离。 |

**示例:**

186
```js
Z
zengyawen 已提交
187 188
var result = process.isIsolatedProcess();
```
Z
zengyawen 已提交
189 190 191 192


## process.isAppUid<sup>8+</sup>

X
xdmal 已提交
193
isAppUid(v: number): boolean
Z
zengyawen 已提交
194

195
判断uid是否属于应用程序。
Z
zengyawen 已提交
196

Z
zengyawen 已提交
197 198
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
199 200 201 202 203 204 205
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | number | 是 | 应用程序的uid。 |

**返回值:**
Z
zengyawen 已提交
206

Z
zengyawen 已提交
207 208 209
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示为应用程序的uid。|
Z
zengyawen 已提交
210

Z
zengyawen 已提交
211 212
**示例:**

213
```js
Z
zengyawen 已提交
214 215
var result = process.isAppUid(688);
```
Z
zengyawen 已提交
216 217 218 219 220 221


## process.is64Bit<sup>8+</sup>

is64Bit(): boolean

222
判断运行环境是否64位。
Z
zengyawen 已提交
223

Z
zengyawen 已提交
224 225
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
226 227 228 229 230
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示为64位环境。 |
Z
zengyawen 已提交
231

Z
zengyawen 已提交
232 233
**示例:**

234
```js
Z
zengyawen 已提交
235 236
var ressult = process.is64Bit();
```
Z
zengyawen 已提交
237 238 239 240


## process.getUidForName<sup>8+</sup>

X
xdmal 已提交
241
getUidForName(v: string): number
Z
zengyawen 已提交
242 243 244

通过进程名获取进程uid。

Z
zengyawen 已提交
245 246
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
247
**参数:**
Z
zengyawen 已提交
248

Z
zengyawen 已提交
249 250 251
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | string | 是 | 进程名。 |
Z
zengyawen 已提交
252

Z
zengyawen 已提交
253 254 255 256 257 258 259 260
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| number | 返回进程uid。|

**示例:**

261
```js
Z
zengyawen 已提交
262 263
var pres = process.getUidForName("tool")
```
Z
zengyawen 已提交
264 265 266 267


## process.getThreadPriority<sup>8+</sup>

X
xdmal 已提交
268
getThreadPriority(v: number): number
Z
zengyawen 已提交
269

270
根据指定的tid获取线程优先级。
Z
zengyawen 已提交
271

Z
zengyawen 已提交
272 273
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
274 275 276 277 278
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | number | 是 | 指定的线程tid。 |
Z
zengyawen 已提交
279

Z
zengyawen 已提交
280
**返回值:**
Z
zengyawen 已提交
281

Z
zengyawen 已提交
282 283 284 285 286 287
| 类型 | 说明 |
| -------- | -------- |
| number | 返回线程的优先级。 |

**示例:**

288
```js
S
shikai-123 已提交
289
var tid = process.tid;
Z
zengyawen 已提交
290 291
var pres = process.getThreadPriority(tid);
```
Z
zengyawen 已提交
292 293 294 295


## process.getStartRealtime<sup>8+</sup>

X
xdmal 已提交
296
getStartRealtime(): number
Z
zengyawen 已提交
297 298 299

获取从系统启动到进程启动所经过的实时时间(以毫秒为单位)。

Z
zengyawen 已提交
300 301
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
302
**返回值:**
Z
zengyawen 已提交
303

Z
zengyawen 已提交
304 305 306 307 308 309
| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的实时时间。|

**示例:**

310
```js
Z
zengyawen 已提交
311 312
var realtime = process.getStartRealtime();
```
Z
zengyawen 已提交
313

Z
zengyawen 已提交
314
## process.getPastCpuTime<sup>8+</sup>
Z
zengyawen 已提交
315

Z
zengyawen 已提交
316
getPastCpuTime(): number
Z
zengyawen 已提交
317 318 319

获取进程启动到当前时间的CPU时间(以毫秒为单位)。

Z
zengyawen 已提交
320 321
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
322 323 324 325 326 327 328
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的CPU时间。 |

**示例:**
Z
zengyawen 已提交
329

330
```js
Z
zengyawen 已提交
331
var result = process.getPastCpuTime() ;
Z
zengyawen 已提交
332
```
Z
zengyawen 已提交
333 334 335 336


## process.getSystemConfig<sup>8+</sup>

X
xdmal 已提交
337
getSystemConfig(name: number): number
Z
zengyawen 已提交
338

Z
zengyawen 已提交
339
获取系统配置信息。
Z
zengyawen 已提交
340

Z
zengyawen 已提交
341 342
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
343 344 345 346 347
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | number | 是 | 指定系统配置参数名。 |
Z
zengyawen 已提交
348

Z
zengyawen 已提交
349
**返回值:**
Z
zengyawen 已提交
350

Z
zengyawen 已提交
351 352 353 354 355 356
| 类型 | 说明 |
| -------- | -------- |
| number | 返回系统配置信息。 |

**示例:**

357
```js
Z
zengyawen 已提交
358 359 360
var _SC_ARG_MAX = 0
var pres = process.getSystemConfig(_SC_ARG_MAX)
```
Z
zengyawen 已提交
361 362 363 364


## process.getEnvironmentVar<sup>8+</sup>

X
xdmal 已提交
365
getEnvironmentVar(name: string): string
Z
zengyawen 已提交
366 367 368

用该方法获取环境变量对应的值。

Z
zengyawen 已提交
369 370
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
371
**参数:**
Z
zengyawen 已提交
372

Z
zengyawen 已提交
373 374 375
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 环境变量名。 |
Z
zengyawen 已提交
376

Z
zengyawen 已提交
377 378 379 380 381 382 383 384
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| string | 返回环境变量名对应的value。 |

**示例:**

385
```js
Z
zengyawen 已提交
386 387
var pres = process.getEnvironmentVar("PATH")
```
Z
zengyawen 已提交
388 389


Z
zengyawen 已提交
390 391
## process.runCmd

S
shikai-123 已提交
392
runCmd(command: string, options?: { timeout : number, killSignal : number | string, maxBuffer : number }): ChildProcess
Z
zengyawen 已提交
393 394 395

通过runcmd可以fork一个新的进程来运行一段shell,并返回ChildProcess对象。

396 397
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
398 399
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| command | string | 是 | shell命令。 |
| options | Object | 否 | 相关选项参数。 |

**表1** options

| 名称 | 参数类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| timeout | number | 否 | 子进程运行的ms数,当子进程运行时间超出此时间,则父进程发送killSignal信号给子进程。timeout默认为0。 |
| killSignal | number&nbsp;&nbsp;\|&nbsp;string | 否 | 子进程运行时间超出timeout时,父进程发送killSignal&nbsp;信号给子进程。killSignal&nbsp;默认为'SIGTERM'。 |
| maxBuffer | number | 否 | 子进程标准输入输出的最大缓冲区大小,当超出此大小时则终止子进程。maxBuffer默认1024\*1024。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| [ChildProcess](#childprocess) | 子进程对象。 |

**示例:**

423
```js
Z
zengyawen 已提交
424 425 426 427 428 429
var child = process.runCmd('ls', { maxBuffer : 2 });
var result = child.wait();
child.getOutput.then(val=>{
    console.log("child.getOutput = " + val);
})
```
Z
zengyawen 已提交
430 431 432


## process.abort
Z
zengyawen 已提交
433

Z
zengyawen 已提交
434
abort(): void
Z
zengyawen 已提交
435

Z
zengyawen 已提交
436 437
该方法会导致进程立即退出并生成一个核心文件,谨慎使用。

Z
zengyawen 已提交
438 439
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
440 441
**示例:**

442
```js
Z
zengyawen 已提交
443 444
process.abort();
```
Z
zengyawen 已提交
445 446


Z
zengyawen 已提交
447
## process.on
Z
zengyawen 已提交
448

Z
zengyawen 已提交
449
on(type: string, listener: EventListener): void
Z
zengyawen 已提交
450

Z
zengyawen 已提交
451 452
存储用户所触发的事件。

453 454
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
455
**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
456

Z
zengyawen 已提交
457 458 459 460 461 462 463 464
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 存储事件的type。 |
| listener | EventListener | 是 | 回调的事件。 |

**表2** EventListener
Z
zengyawen 已提交
465

Z
zengyawen 已提交
466 467
| 名称 | 说明 |
| -------- | -------- |
X
xdmal 已提交
468
| EventListener&nbsp;=&nbsp;(evt: &nbsp;Object)&nbsp;=&gt;&nbsp;void | 用户存储的事件。 |
Z
zengyawen 已提交
469

Z
zengyawen 已提交
470 471
**示例:**

472
```js
Z
zengyawen 已提交
473 474 475 476
process.on("data", (e)=>{
    console.log("data callback");
})
```
Z
zengyawen 已提交
477 478 479 480 481


## process.off

off(type: string): boolean
Z
zengyawen 已提交
482

Z
zengyawen 已提交
483 484
删除用户存储的事件。

485 486
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
487
**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
488

Z
zengyawen 已提交
489
**参数:**
Z
zengyawen 已提交
490

Z
zengyawen 已提交
491 492 493
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 删除事件的type。 |
Z
zengyawen 已提交
494

Z
zengyawen 已提交
495 496 497 498 499 500 501 502
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 事件是否删除成功。 |

**示例:**

503
```js
Z
zengyawen 已提交
504 505 506 507 508
process.on("data", (e)=>{
    console.log("data callback");
})
var result = process.off("data");
```
Z
zengyawen 已提交
509 510 511 512 513


## process.exit

exit(code: number): void
Z
zengyawen 已提交
514

Z
zengyawen 已提交
515 516 517 518 519
终止程序。

请谨慎使用此接口。

**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
520

Z
zengyawen 已提交
521
**参数:**
Z
zengyawen 已提交
522

Z
zengyawen 已提交
523 524 525 526 527 528
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| code | number | 是 | 进程的退出码。 |

**示例:**

529
```js
Z
zengyawen 已提交
530 531
process.exit(0);
```
Z
zengyawen 已提交
532 533 534 535 536


## process.cwd

cwd(): string
Z
zengyawen 已提交
537

Z
zengyawen 已提交
538
用该方法获取进程的工作目录。
Z
zengyawen 已提交
539

540 541
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
542 543
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
544 545
**示例:**

546
```js
Z
zengyawen 已提交
547 548
var path = process.cwd();
```
Z
zengyawen 已提交
549 550


Z
zengyawen 已提交
551
## process.chdir
Z
zengyawen 已提交
552

Z
zengyawen 已提交
553
chdir(dir: string): void
Z
zengyawen 已提交
554

Z
zengyawen 已提交
555 556
更改进程的当前工作目录。

557 558
该接口为系统接口,三方应用不支持调用。

Z
zengyawen 已提交
559
**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
560

Z
zengyawen 已提交
561 562 563 564 565
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| dir | string | 是 | 路径。 |
Z
zengyawen 已提交
566

Z
zengyawen 已提交
567 568
**示例:**

569
```js
Z
zengyawen 已提交
570 571
process.chdir('/system');
```
Z
zengyawen 已提交
572 573


Z
zengyawen 已提交
574
## process.uptime
Z
zengyawen 已提交
575

Z
zengyawen 已提交
576
uptime(): number
Z
zengyawen 已提交
577

Z
zengyawen 已提交
578
获取当前系统已运行的秒数。
Z
zengyawen 已提交
579

Z
zengyawen 已提交
580 581
**系统能力:** SystemCapability.Utils.Lang

Z
zengyawen 已提交
582 583 584 585 586
**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| number | 当前系统已运行的秒数。 |
Z
zengyawen 已提交
587

Z
zengyawen 已提交
588 589
**示例:**

590
```js
Z
zengyawen 已提交
591 592
var time = process.uptime();
```
Z
zengyawen 已提交
593 594


Z
zengyawen 已提交
595
## process.kill
Z
zengyawen 已提交
596

S
shikai-123 已提交
597
kill(signal: number, pid: number): boolean
Z
zengyawen 已提交
598

Z
zengyawen 已提交
599 600 601
发送signal到指定的进程,结束指定进程。

**系统能力:** SystemCapability.Utils.Lang
Z
zengyawen 已提交
602

Z
zengyawen 已提交
603 604 605 606 607 608 609 610 611 612 613 614 615 616
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| pid | number | 是 | 进程的id。 |
| signal | number | 是 | 发送的信号。 |

**返回值:**

| 类型 | 说明 |
| -------- | -------- |
| boolean | 信号是否发送成功。 |

**示例:**
617 618

```js
Z
zengyawen 已提交
619
var pres = process.pid
S
shikai-123 已提交
620
var result = process.kill(28, pres)
Z
zengyawen 已提交
621
```