js-apis-process.md 11.6 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
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
20 21 22 23 24 25 26 27
| egid | number | 是 | 否 | 进程的有效组标识。 |
| euid | number | 是 | 否 | 进程的有效用户身份。 |
| gid | number | 是 | 否 | 进程的组标识。 |
| uid | number | 是 | 否 | 进程的用户标识。 |
| groups | number[] | 是 | 否 | 带有补充组id的数组。 |
| pid | number | 是 | 否 | 当前进程的pid。 |
| ppid | number | 是 | 否 | 当前进程的父进程的pid。 |
| 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

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

Z
zengyawen 已提交
55 56 57 58 59
**返回值:**

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

Z
zengyawen 已提交
61 62
**示例:**

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


Z
zengyawen 已提交
72
### getOutput
Z
zengyawen 已提交
73

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

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

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

Z
zengyawen 已提交
80
**返回值:**
Z
zengyawen 已提交
81

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

**示例:**

88
```js
Z
zengyawen 已提交
89 90 91 92 93 94
var child = process.runCmd('ls');
var result = child.wait();
child.getOutput.then(val=>{
    console.log("child.getOutput = " + val);
})
```
Z
zengyawen 已提交
95 96


Z
zengyawen 已提交
97
### getErrorOutput
Z
zengyawen 已提交
98

Z
zengyawen 已提交
99
getErrorOutput(): Promise&lt;Uint8Array&gt;
Z
zengyawen 已提交
100

Z
zengyawen 已提交
101 102 103
获取子进程的标准错误输出。

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

Z
zengyawen 已提交
105 106 107 108 109
**返回值:**

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

Z
zengyawen 已提交
111 112
**示例:**

113
```js
Z
zengyawen 已提交
114 115 116 117 118 119
var child = process.runCmd('madir test.text');
var result = child.wait();
child.getErrorOutput.then(val=>{
    console.log("child.getErrorOutput= " + val);
})
```
Z
zengyawen 已提交
120 121


Z
zengyawen 已提交
122
### close
Z
zengyawen 已提交
123

X
xdmal 已提交
124
close(): void
Z
zengyawen 已提交
125

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

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

Z
zengyawen 已提交
130 131
**示例:**

132
```js
Z
zengyawen 已提交
133 134 135
var child = process.runCmd('sleep 5; ls');
child.close();
```
Z
zengyawen 已提交
136 137


Z
zengyawen 已提交
138
### kill
Z
zengyawen 已提交
139

Z
zengyawen 已提交
140
kill(signal: number | string): void
Z
zengyawen 已提交
141

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

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

Z
zengyawen 已提交
146 147 148 149 150
**参数:**

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

Z
zengyawen 已提交
152 153
**示例:**

154
```js
Z
zengyawen 已提交
155 156 157
var child = process.runCmd('sleep 5; ls');
child.kill(9);
```
Z
zengyawen 已提交
158 159


Z
zengyawen 已提交
160 161 162 163
## process.isIsolatedProcess<sup>8+</sup>

isIsolatedProcess(): boolean

164
判断进程是否被隔离。
Z
zengyawen 已提交
165

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

Z
zengyawen 已提交
168
**返回值:**
Z
zengyawen 已提交
169

Z
zengyawen 已提交
170 171 172 173 174 175
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示进程被隔离。 |

**示例:**

176
```js
Z
zengyawen 已提交
177 178
var result = process.isIsolatedProcess();
```
Z
zengyawen 已提交
179 180 181 182


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

X
xdmal 已提交
183
isAppUid(v: number): boolean
Z
zengyawen 已提交
184

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

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

Z
zengyawen 已提交
189 190 191 192 193 194 195
**参数:**

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

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

Z
zengyawen 已提交
197 198 199
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示为应用程序的uid。|
Z
zengyawen 已提交
200

Z
zengyawen 已提交
201 202
**示例:**

203
```js
Z
zengyawen 已提交
204 205
var result = process.isAppUid(688);
```
Z
zengyawen 已提交
206 207 208 209 210 211


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

is64Bit(): boolean

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

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

Z
zengyawen 已提交
216 217 218 219 220
**返回值:**

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

Z
zengyawen 已提交
222 223
**示例:**

224
```js
Z
zengyawen 已提交
225 226
var ressult = process.is64Bit();
```
Z
zengyawen 已提交
227 228 229 230


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

X
xdmal 已提交
231
getUidForName(v: string): number
Z
zengyawen 已提交
232 233 234

通过进程名获取进程uid。

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

Z
zengyawen 已提交
237
**参数:**
Z
zengyawen 已提交
238

Z
zengyawen 已提交
239 240 241
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| v | string | 是 | 进程名。 |
Z
zengyawen 已提交
242

Z
zengyawen 已提交
243 244 245 246 247 248 249 250
**返回值:**

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

**示例:**

251
```js
Z
zengyawen 已提交
252 253
var pres = process.getUidForName("tool")
```
Z
zengyawen 已提交
254 255 256 257


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

X
xdmal 已提交
258
getThreadPriority(v: number): number
Z
zengyawen 已提交
259

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

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

Z
zengyawen 已提交
264 265 266 267 268
**参数:**

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

Z
zengyawen 已提交
270
**返回值:**
Z
zengyawen 已提交
271

Z
zengyawen 已提交
272 273 274 275 276 277
| 类型 | 说明 |
| -------- | -------- |
| number | 返回线程的优先级。 |

**示例:**

278
```js
Z
zengyawen 已提交
279 280 281
var tid = process.getTid();
var pres = process.getThreadPriority(tid);
```
Z
zengyawen 已提交
282 283 284 285


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

X
xdmal 已提交
286
getStartRealtime(): number
Z
zengyawen 已提交
287 288 289

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

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

Z
zengyawen 已提交
292
**返回值:**
Z
zengyawen 已提交
293

Z
zengyawen 已提交
294 295 296 297 298 299
| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的实时时间。|

**示例:**

300
```js
Z
zengyawen 已提交
301 302
var realtime = process.getStartRealtime();
```
Z
zengyawen 已提交
303

Z
zengyawen 已提交
304
## process.getPastCpuTime<sup>8+</sup>
Z
zengyawen 已提交
305

Z
zengyawen 已提交
306
getPastCpuTime(): number
Z
zengyawen 已提交
307 308 309

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

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

Z
zengyawen 已提交
312 313 314 315 316 317 318
**返回值:**

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

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

320
```js
Z
zengyawen 已提交
321
var result = process.getPastCpuTime() ;
Z
zengyawen 已提交
322
```
Z
zengyawen 已提交
323 324 325 326


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

X
xdmal 已提交
327
getSystemConfig(name: number): number
Z
zengyawen 已提交
328

Z
zengyawen 已提交
329
获取系统配置信息。
Z
zengyawen 已提交
330

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

Z
zengyawen 已提交
333 334 335 336 337
**参数:**

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

Z
zengyawen 已提交
339
**返回值:**
Z
zengyawen 已提交
340

Z
zengyawen 已提交
341 342 343 344 345 346
| 类型 | 说明 |
| -------- | -------- |
| number | 返回系统配置信息。 |

**示例:**

347
```js
Z
zengyawen 已提交
348 349 350
var _SC_ARG_MAX = 0
var pres = process.getSystemConfig(_SC_ARG_MAX)
```
Z
zengyawen 已提交
351 352 353 354


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

X
xdmal 已提交
355
getEnvironmentVar(name: string): string
Z
zengyawen 已提交
356 357 358

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

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

Z
zengyawen 已提交
361
**参数:**
Z
zengyawen 已提交
362

Z
zengyawen 已提交
363 364 365
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| name | string | 是 | 环境变量名。 |
Z
zengyawen 已提交
366

Z
zengyawen 已提交
367 368 369 370 371 372 373 374
**返回值:**

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

**示例:**

375
```js
Z
zengyawen 已提交
376 377
var pres = process.getEnvironmentVar("PATH")
```
Z
zengyawen 已提交
378 379


Z
zengyawen 已提交
380 381
## process.runCmd

S
shikai-123 已提交
382
runCmd(command: string, options?: { timeout : number, killSignal : number | string, maxBuffer : number }): ChildProcess
Z
zengyawen 已提交
383 384 385

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

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

Z
zengyawen 已提交
388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
**参数:**

| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| 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) | 子进程对象。 |

**示例:**

411
```js
Z
zengyawen 已提交
412 413 414 415 416 417
var child = process.runCmd('ls', { maxBuffer : 2 });
var result = child.wait();
child.getOutput.then(val=>{
    console.log("child.getOutput = " + val);
})
```
Z
zengyawen 已提交
418 419 420


## process.abort
Z
zengyawen 已提交
421

Z
zengyawen 已提交
422
abort(): void
Z
zengyawen 已提交
423

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

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

Z
zengyawen 已提交
428 429
**示例:**

430
```js
Z
zengyawen 已提交
431 432
process.abort();
```
Z
zengyawen 已提交
433 434


Z
zengyawen 已提交
435
## process.on
Z
zengyawen 已提交
436

Z
zengyawen 已提交
437
on(type: string, listener: EventListener): void
Z
zengyawen 已提交
438

Z
zengyawen 已提交
439 440 441
存储用户所触发的事件。

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

Z
zengyawen 已提交
443 444 445 446 447 448 449 450
**参数:**

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

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

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

Z
zengyawen 已提交
456 457
**示例:**

458
```js
Z
zengyawen 已提交
459 460 461 462
process.on("data", (e)=>{
    console.log("data callback");
})
```
Z
zengyawen 已提交
463 464 465 466 467


## process.off

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

Z
zengyawen 已提交
469 470 471
删除用户存储的事件。

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

Z
zengyawen 已提交
473
**参数:**
Z
zengyawen 已提交
474

Z
zengyawen 已提交
475 476 477
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| type | string | 是 | 删除事件的type。 |
Z
zengyawen 已提交
478

Z
zengyawen 已提交
479 480 481 482 483 484 485 486
**返回值:**

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

**示例:**

487
```js
Z
zengyawen 已提交
488 489 490 491 492
process.on("data", (e)=>{
    console.log("data callback");
})
var result = process.off("data");
```
Z
zengyawen 已提交
493 494 495 496 497


## process.exit

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

Z
zengyawen 已提交
499 500 501 502 503
终止程序。

请谨慎使用此接口。

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

Z
zengyawen 已提交
505
**参数:**
Z
zengyawen 已提交
506

Z
zengyawen 已提交
507 508 509 510 511 512
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| code | number | 是 | 进程的退出码。 |

**示例:**

513
```js
Z
zengyawen 已提交
514 515
process.exit(0);
```
Z
zengyawen 已提交
516 517 518 519 520


## process.cwd

cwd(): string
Z
zengyawen 已提交
521

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

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

Z
zengyawen 已提交
526 527
**示例:**

528
```js
Z
zengyawen 已提交
529 530
var path = process.cwd();
```
Z
zengyawen 已提交
531 532


Z
zengyawen 已提交
533
## process.chdir
Z
zengyawen 已提交
534

Z
zengyawen 已提交
535
chdir(dir: string): void
Z
zengyawen 已提交
536

Z
zengyawen 已提交
537 538 539
更改进程的当前工作目录。

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

Z
zengyawen 已提交
541 542 543 544 545
**参数:**

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

Z
zengyawen 已提交
547 548
**示例:**

549
```js
Z
zengyawen 已提交
550 551
process.chdir('/system');
```
Z
zengyawen 已提交
552 553


Z
zengyawen 已提交
554
## process.uptime
Z
zengyawen 已提交
555

Z
zengyawen 已提交
556
uptime(): number
Z
zengyawen 已提交
557

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

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

Z
zengyawen 已提交
562 563 564 565 566
**返回值:**

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

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

570
```js
Z
zengyawen 已提交
571 572
var time = process.uptime();
```
Z
zengyawen 已提交
573 574


Z
zengyawen 已提交
575
## process.kill
Z
zengyawen 已提交
576

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

Z
zengyawen 已提交
579 580 581
发送signal到指定的进程,结束指定进程。

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

Z
zengyawen 已提交
583 584 585 586 587 588 589 590 591 592 593 594 595 596
**参数:**

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

**返回值:**

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

**示例:**
597 598

```js
Z
zengyawen 已提交
599 600 601
var pres = process.pid
var result = that.kill(pres, 28)
```