js-apis-process.md 10.9 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

## 权限
Z
zengyawen 已提交
15 16 17



Z
zengyawen 已提交
18 19 20 21 22

## 属性

| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
Z
zengyawen 已提交
23 24 25 26 27 28 29 30
| 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 已提交
31 32 33


## ChildProcess
Z
zengyawen 已提交
34 35 36 37

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


Z
zengyawen 已提交
38
### 属性
Z
zengyawen 已提交
39

Z
zengyawen 已提交
40 41 42 43 44 45
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| pid | number | 是 | 否 | 子进程的pid。 |
| ppid | number | 是 | 否 | 子进程的父进程的pid。 |
| exitCode | number | 是 | 否 | 子进程的退出码。 |
| killed | boolean | 是 | 否 | 父进程给子进程发信号是否成功。 |
Z
zengyawen 已提交
46 47


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

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

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

Z
zengyawen 已提交
54 55 56 57
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;number&gt; | 异步返回子进程的退出码。 |
Z
zengyawen 已提交
58

Z
zengyawen 已提交
59 60 61 62 63 64 65 66
- 示例:
  ```
  var child = process.runCmd('ls');
  var result = child.wait();
  result.then(val=>{
      console.log("result = " + val);
  })
  ```
Z
zengyawen 已提交
67 68


Z
zengyawen 已提交
69
### getOutput
Z
zengyawen 已提交
70

Z
zengyawen 已提交
71 72 73
getOutput(): Promise&lt;Uint8Array&gt;

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

Z
zengyawen 已提交
75 76 77 78
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | Promise&lt;Uint8Array&gt; | 异步返回标准输出的字节流。 |
Z
zengyawen 已提交
79

Z
zengyawen 已提交
80 81 82 83 84 85 86 87
- 示例:
  ```
  var child = process.runCmd('ls');
  var result = child.wait();
  child.getOutput.then(val=>{
      console.log("child.getOutput = " + val);
  })
  ```
Z
zengyawen 已提交
88 89


Z
zengyawen 已提交
90
### getErrorOutput
Z
zengyawen 已提交
91

Z
zengyawen 已提交
92
getErrorOutput(): Promise&lt;Uint8Array&gt;
Z
zengyawen 已提交
93 94 95

getErrorOutput函数用来获取子进程的标准错误输出。

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

Z
zengyawen 已提交
101 102 103 104 105 106 107 108
- 示例:
  ```
  var child = process.runCmd('madir test.text');
  var result = child.wait();
  child.getErrorOutput.then(val=>{
      console.log("child.getErrorOutput= " + val);
  })
  ```
Z
zengyawen 已提交
109 110


Z
zengyawen 已提交
111
### close
Z
zengyawen 已提交
112

Z
zengyawen 已提交
113
close():  void
Z
zengyawen 已提交
114

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

Z
zengyawen 已提交
117 118 119 120 121
- 示例:
  ```
  var child = process.runCmd('sleep 5; ls');
  child.close();
  ```
Z
zengyawen 已提交
122 123


Z
zengyawen 已提交
124
### kill
Z
zengyawen 已提交
125

Z
zengyawen 已提交
126
kill(signal: number | string): void
Z
zengyawen 已提交
127

Z
zengyawen 已提交
128
kill函数用来发送信号给子进程,结束指定进程。
Z
zengyawen 已提交
129

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

Z
zengyawen 已提交
135 136 137 138 139
- 示例:
  ```
  var child = process.runCmd('sleep 5; ls');
  child.kill(9);
  ```
Z
zengyawen 已提交
140 141


Z
zengyawen 已提交
142 143 144 145
## process.isIsolatedProcess<sup>8+</sup>

isIsolatedProcess(): boolean

146
判断进程是否被隔离。
Z
zengyawen 已提交
147 148 149 150

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
151
  | boolean | 返回判断结果,如果返回true表示进程被隔离。 |
Z
zengyawen 已提交
152 153 154 155 156 157 158 159 160 161 162

- 示例:
  ```
  var result = process.isIsolatedProcess();
  ```


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

isAppUid(v:number): boolean

163
判断uid是否属于应用程序。
Z
zengyawen 已提交
164 165 166 167

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
168
  | v | number | 是 | 应用程序的uid。 |
Z
zengyawen 已提交
169 170 171 172

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
173
  | boolean | 返回判断结果,如果返回true表示为应用程序的uid。|
Z
zengyawen 已提交
174 175 176 177 178 179 180 181 182 183 184

- 示例:
  ```
  var result = process.isAppUid(688);
  ```


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

is64Bit(): boolean

185
判断运行环境是否64位。
Z
zengyawen 已提交
186 187 188 189

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
190
  | boolean | 返回判断结果,如果返回true表示为64位环境。 |
Z
zengyawen 已提交
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206

- 示例:
  ```
  var ressult = process.is64Bit();
  ```


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

getUidForName(v:string): number

通过进程名获取进程uid。

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
207
  | v | string | 是 | 进程名。 |
Z
zengyawen 已提交
208 209 210 211

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
212
  | number | 返回进程uid。|
Z
zengyawen 已提交
213 214 215 216 217 218 219 220 221 222 223

- 示例:
  ```
  var pres = process.getUidForName("tool")
  ```


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

getThreadPriority(v:number): number

224
根据指定的tid获取线程优先级。
Z
zengyawen 已提交
225 226 227 228

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
229
  | v | number | 是 | 指定的线程tid。 |
Z
zengyawen 已提交
230 231 232 233

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
234
  | number | 返回线程的优先级。 |
Z
zengyawen 已提交
235 236 237

- 示例:
  ```
Z
zengyawen 已提交
238
  var tid = process.getTid();
Z
zengyawen 已提交
239 240 241 242 243 244 245 246 247 248 249 250 251
  var pres = process.getThreadPriority(tid);
  ```


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

getStartRealtime() :number

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

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
252
  | number | 返回经过的实时时间。|
Z
zengyawen 已提交
253 254 255 256 257 258 259 260 261 262 263

- 示例:
  ```
  var realtime = process.getStartRealtime();
  ```


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

getAvailableCores() :number[]

264
获取多核设备上当前进程可用的CPU内核。
Z
zengyawen 已提交
265 266 267 268

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
269
  | number[] | 返回可用内核数。 |
Z
zengyawen 已提交
270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285

- 示例:
  ```
  var result = getAvailableCores();
  ```


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

getPastCputime() :number

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

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
286
  | number | 返回经过的CPU时间。 |
Z
zengyawen 已提交
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302

- 示例:
  ```
  var result = process.getPastCputime() ;
  ```


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

getSystemConfig(name:number): number

用该方法发送signal到指定的进程。

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
303
  | name | number | 是 | 指定系统配置参数名。 |
Z
zengyawen 已提交
304 305 306 307

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
308
  | number | 返回系统配置信息。 |
Z
zengyawen 已提交
309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325

- 示例:
  ```
  var _SC_ARG_MAX = 0
  var pres = process.getSystemConfig(_SC_ARG_MAX)
  ```


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

getEnvironmentVar(name:string): string

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

- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
326
  | name | string | 是 | 环境变量名。 |
Z
zengyawen 已提交
327 328 329 330

- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
331
  | string | 返回环境变量名对应的value。 |
Z
zengyawen 已提交
332 333 334 335 336 337 338

- 示例:
  ```
  var pres = process.getEnvironmentVar("PATH")
  ```


Z
zengyawen 已提交
339 340 341
## process.runCmd

runCmd(command: string, options?: { timeout : number, killSignal :number | string, maxBuffer : number }) : ChildProcess
Z
zengyawen 已提交
342 343 344

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

Z
zengyawen 已提交
345 346 347 348 349
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | command | string | 是 | shell命令。 |
  | options | Object | 否 | 相关选项参数。 |
Z
zengyawen 已提交
350

Z
zengyawen 已提交
351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369
  **表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);
370
  })
Z
zengyawen 已提交
371 372 373 374
  ```


## process.abort
Z
zengyawen 已提交
375

Z
zengyawen 已提交
376
abort(): void
Z
zengyawen 已提交
377

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

- 示例:
  ```
  process.abort();
  ```
Z
zengyawen 已提交
384 385


Z
zengyawen 已提交
386
## process.on
Z
zengyawen 已提交
387

Z
zengyawen 已提交
388
on(type: string, listener: EventListener): void
Z
zengyawen 已提交
389 390 391

用该方法来存储用户所触发的事件。

Z
zengyawen 已提交
392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 存储事件的type。 |
  | listener | EventListener | 是 | 回调的事件。 |

  **表2** EventListener
  
  | 名称 | 说明 |
  | -------- | -------- |
  | EventListener&nbsp;=&nbsp;(evt:&nbsp;Object)&nbsp;=&gt;&nbsp;void | 用户存储的事件。 |

- 示例:
  ```
  process.on("data", (e)=>{
      console.log("data callback");
  })
  ```


## process.off

off(type: string): boolean
Z
zengyawen 已提交
415 416 417

用该方法来删除用户存储的事件。

Z
zengyawen 已提交
418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | type | string | 是 | 删除事件的type。 |

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

- 示例:
  ```
  process.on("data", (e)=>{
      console.log("data callback");
  })
  var result = process.off("data");
  ```


## process.exit

exit(code: number): void
Z
zengyawen 已提交
440 441 442

用该方法终止程序,谨慎使用。

Z
zengyawen 已提交
443 444 445 446
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | code | number | 是 | 进程的退出码。 |
Z
zengyawen 已提交
447

Z
zengyawen 已提交
448 449 450 451 452 453 454 455 456
- 示例:
  ```
  process.exit(0);
  ```


## process.cwd

cwd(): string
Z
zengyawen 已提交
457

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

Z
zengyawen 已提交
460 461 462 463
- 示例:
  ```
  var path = process.cwd();
  ```
Z
zengyawen 已提交
464 465


Z
zengyawen 已提交
466
## process.chdir
Z
zengyawen 已提交
467

Z
zengyawen 已提交
468
chdir(dir: string): void
Z
zengyawen 已提交
469 470 471

用该方法更改进程的当前工作目录。

Z
zengyawen 已提交
472 473 474 475
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | dir | string | 是 | 路径。 |
Z
zengyawen 已提交
476

Z
zengyawen 已提交
477 478 479 480
- 示例:
  ```
  process.chdir('/system');
  ```
Z
zengyawen 已提交
481 482


Z
zengyawen 已提交
483
## process.uptime
Z
zengyawen 已提交
484

Z
zengyawen 已提交
485
uptime(): number
Z
zengyawen 已提交
486

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

Z
zengyawen 已提交
489 490 491 492
- 返回值:
  | 类型 | 说明 |
  | -------- | -------- |
  | number | 当前系统已运行的秒数。 |
Z
zengyawen 已提交
493

Z
zengyawen 已提交
494 495 496 497
- 示例:
  ```
  var time = process.uptime();
  ```
Z
zengyawen 已提交
498 499


Z
zengyawen 已提交
500
## process.kill
Z
zengyawen 已提交
501

Z
zengyawen 已提交
502
kill(pid: number,signal: number ): boolean
Z
zengyawen 已提交
503

Z
zengyawen 已提交
504
用该方法发送signal到指定的进程,结束指定进程。
Z
zengyawen 已提交
505

Z
zengyawen 已提交
506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521
- 参数:
  | 参数名 | 类型 | 必填 | 说明 |
  | -------- | -------- | -------- | -------- |
  | pid | number | 是 | 进程的id。 |
  | signal | number | 是 | 发送的信号。 |

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

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