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 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 88 89 90 91 92 93 94
| 类型 | 说明 |
| -------- | -------- |
| Promise&lt;Uint8Array&gt; | 异步返回标准输出的字节流。 |

**示例:**

```
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 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

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

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

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

Z
zengyawen 已提交
130 131 132 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 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 176 177 178
| 类型 | 说明 |
| -------- | -------- |
| boolean | 返回判断结果,如果返回true表示进程被隔离。 |

**示例:**

```
var result = process.isIsolatedProcess();
```
Z
zengyawen 已提交
179 180 181 182 183 184


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

isAppUid(v:number): boolean

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 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 225 226
**示例:**

```
var ressult = process.is64Bit();
```
Z
zengyawen 已提交
227 228 229 230 231 232 233 234


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

getUidForName(v:string): number

通过进程名获取进程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 251 252 253
**返回值:**

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

**示例:**

```
var pres = process.getUidForName("tool")
```
Z
zengyawen 已提交
254 255 256 257 258 259


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

getThreadPriority(v:number): number

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 278 279 280 281
| 类型 | 说明 |
| -------- | -------- |
| number | 返回线程的优先级。 |

**示例:**

```
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 300 301 302
| 类型 | 说明 |
| -------- | -------- |
| number | 返回经过的实时时间。|

**示例:**

```
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

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


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

getSystemConfig(name:number): number

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 347 348 349 350
| 类型 | 说明 |
| -------- | -------- |
| number | 返回系统配置信息。 |

**示例:**

```
var _SC_ARG_MAX = 0
var pres = process.getSystemConfig(_SC_ARG_MAX)
```
Z
zengyawen 已提交
351 352 353 354 355 356 357 358


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

getEnvironmentVar(name:string): string

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

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 375 376 377
**返回值:**

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

**示例:**

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


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

Z
zengyawen 已提交
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 411 412 413 414 415 416 417
**参数:**

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

**示例:**

```
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 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 454
| 名称 | 说明 |
| -------- | -------- |
| EventListener&nbsp;=&nbsp;(evt:&nbsp;Object)&nbsp;=&gt;&nbsp;void | 用户存储的事件。 |
Z
zengyawen 已提交
455

Z
zengyawen 已提交
456 457 458 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 487 488 489 490 491 492
**返回值:**

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

**示例:**

```
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 513 514 515
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
| code | number | 是 | 进程的退出码。 |

**示例:**

```
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 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 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 571 572
**示例:**

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


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

Z
zengyawen 已提交
577
kill(pid: number, signal: 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 597 598 599 600
**参数:**

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

**返回值:**

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

**示例:**
```
var pres = process.pid
var result = that.kill(pres, 28)
```