1# 获取进程相关的信息 2 3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 5 6 7## 导入模块 8 9``` 10import process from '@ohos.process'; 11``` 12 13 14## 属性 15 16**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang。 17 18| 名称 | 类型 | 可读 | 可写 | 说明 | 19| -------- | -------- | -------- | -------- | -------- | 20| egid | number | 是 | 否 | 进程的有效组标识。该接口为系统接口,三方应用不支持调用。 | 21| euid | number | 是 | 否 | 进程的有效用户身份。该接口为系统接口,三方应用不支持调用。 | 22| gid | number | 是 | 否 | 进程的组标识。该接口为系统接口,三方应用不支持调用。 | 23| uid | number | 是 | 否 | 进程的用户标识。 | 24| groups | number[] | 是 | 否 | 带有补充组id的数组。该接口为系统接口,三方应用不支持调用。 | 25| pid | number | 是 | 否 | 当前进程的pid。 | 26| ppid | number | 是 | 否 | 当前进程的父进程的pid。该接口为系统接口,三方应用不支持调用。 | 27| tid<sup>8+</sup> | number | 是 | 否 | 当前线程的tid。 | 28 29 30## ChildProcess 31 32主进程可以获取子进程的标准输入输出,以及发送信号和关闭子进程。 33 34 35### 属性 36 37**系统能力:** 以下各项对应的系统能力均为SystemCapability.Utils.Lang。 38 39| 名称 | 类型 | 可读 | 可写 | 说明 | 40| -------- | -------- | -------- | -------- | -------- | 41| pid | number | 是 | 否 | 子进程的pid。该接口为系统接口,三方应用不支持调用。 | 42| ppid | number | 是 | 否 | 子进程的父进程的pid。该接口为系统接口,三方应用不支持调用。 | 43| exitCode | number | 是 | 否 | 子进程的退出码。该接口为系统接口,三方应用不支持调用。 | 44| killed | boolean | 是 | 否 | 父进程给子进程发信号是否成功。该接口为系统接口,三方应用不支持调用。 | 45 46 47### wait 48 49wait(): Promise<number> 50 51等待子进程运行结束,返回promise对象,其值为子进程的退出码。 52 53该接口为系统接口,三方应用不支持调用。 54 55**系统能力:** SystemCapability.Utils.Lang 56 57**返回值:** 58 59| 类型 | 说明 | 60| -------- | -------- | 61| Promise<number> | 异步返回子进程的退出码。 | 62 63**示例:** 64 65```js 66var child = process.runCmd('ls'); 67var result = child.wait(); 68result.then(val=>{ 69 console.log("result = " + val); 70}) 71``` 72 73 74### getOutput 75 76getOutput(): Promise<Uint8Array> 77 78获取子进程的标准输出。 79 80该接口为系统接口,三方应用不支持调用。 81 82**系统能力:** SystemCapability.Utils.Lang 83 84**返回值:** 85 86| 类型 | 说明 | 87| -------- | -------- | 88| Promise<Uint8Array> | 异步返回标准输出的字节流。 | 89 90**示例:** 91 92```js 93var child = process.runCmd('ls'); 94var result = child.wait(); 95child.getOutput.then(val=>{ 96 console.log("child.getOutput = " + val); 97}) 98``` 99 100 101### getErrorOutput 102 103getErrorOutput(): Promise<Uint8Array> 104 105获取子进程的标准错误输出。 106 107该接口为系统接口,三方应用不支持调用。 108 109**系统能力:** SystemCapability.Utils.Lang 110 111**返回值:** 112 113| 类型 | 说明 | 114| -------- | -------- | 115| Promise<Uint8Array> | 异步返回标准错误输出的字节流。 | 116 117**示例:** 118 119```js 120var child = process.runCmd('madir test.text'); 121var result = child.wait(); 122child.getErrorOutput.then(val=>{ 123 console.log("child.getErrorOutput= " + val); 124}) 125``` 126 127 128### close 129 130close(): void 131 132关闭正在运行的子进程。 133 134该接口为系统接口,三方应用不支持调用。 135 136**系统能力:** SystemCapability.Utils.Lang 137 138**示例:** 139 140```js 141var child = process.runCmd('sleep 5; ls'); 142child.close(); 143``` 144 145 146### kill 147 148kill(signal: number | string): void 149 150用于发送信号给子进程,结束指定进程。 151 152该接口为系统接口,三方应用不支持调用。 153 154**系统能力:** SystemCapability.Utils.Lang 155 156**参数:** 157 158| 参数名 | 类型 | 必填 | 说明 | 159| -------- | -------- | -------- | -------- | 160| signal | number \| string | 是 | 数字或字符串。 | 161 162**示例:** 163 164```js 165var child = process.runCmd('sleep 5; ls'); 166child.kill(9); 167``` 168 169 170## process.isIsolatedProcess<sup>8+</sup> 171 172isIsolatedProcess(): boolean 173 174判断进程是否被隔离。 175 176**系统能力:** SystemCapability.Utils.Lang 177 178**返回值:** 179 180| 类型 | 说明 | 181| -------- | -------- | 182| boolean | 返回判断结果,如果返回true表示进程被隔离。 | 183 184**示例:** 185 186```js 187var result = process.isIsolatedProcess(); 188``` 189 190 191## process.isAppUid<sup>8+</sup> 192 193isAppUid(v: number): boolean 194 195判断uid是否属于应用程序。 196 197**系统能力:** SystemCapability.Utils.Lang 198 199**参数:** 200 201| 参数名 | 类型 | 必填 | 说明 | 202| -------- | -------- | -------- | -------- | 203| v | number | 是 | 应用程序的uid。 | 204 205**返回值:** 206 207| 类型 | 说明 | 208| -------- | -------- | 209| boolean | 返回判断结果,如果返回true表示为应用程序的uid。| 210 211**示例:** 212 213```js 214var result = process.isAppUid(688); 215``` 216 217 218## process.is64Bit<sup>8+</sup> 219 220is64Bit(): boolean 221 222判断运行环境是否64位。 223 224**系统能力:** SystemCapability.Utils.Lang 225 226**返回值:** 227 228| 类型 | 说明 | 229| -------- | -------- | 230| boolean | 返回判断结果,如果返回true表示为64位环境。 | 231 232**示例:** 233 234```js 235var ressult = process.is64Bit(); 236``` 237 238 239## process.getUidForName<sup>8+</sup> 240 241getUidForName(v: string): number 242 243通过进程名获取进程uid。 244 245**系统能力:** SystemCapability.Utils.Lang 246 247**参数:** 248 249| 参数名 | 类型 | 必填 | 说明 | 250| -------- | -------- | -------- | -------- | 251| v | string | 是 | 进程名。 | 252 253**返回值:** 254 255| 类型 | 说明 | 256| -------- | -------- | 257| number | 返回进程uid。| 258 259**示例:** 260 261```js 262var pres = process.getUidForName("tool") 263``` 264 265 266## process.getThreadPriority<sup>8+</sup> 267 268getThreadPriority(v: number): number 269 270根据指定的tid获取线程优先级。 271 272**系统能力:** SystemCapability.Utils.Lang 273 274**参数:** 275 276| 参数名 | 类型 | 必填 | 说明 | 277| -------- | -------- | -------- | -------- | 278| v | number | 是 | 指定的线程tid。 | 279 280**返回值:** 281 282| 类型 | 说明 | 283| -------- | -------- | 284| number | 返回线程的优先级。 | 285 286**示例:** 287 288```js 289var tid = process.getTid(); 290var pres = process.getThreadPriority(tid); 291``` 292 293 294## process.getStartRealtime<sup>8+</sup> 295 296getStartRealtime(): number 297 298获取从系统启动到进程启动所经过的实时时间(以毫秒为单位)。 299 300**系统能力:** SystemCapability.Utils.Lang 301 302**返回值:** 303 304| 类型 | 说明 | 305| -------- | -------- | 306| number | 返回经过的实时时间。| 307 308**示例:** 309 310```js 311var realtime = process.getStartRealtime(); 312``` 313 314## process.getPastCpuTime<sup>8+</sup> 315 316getPastCpuTime(): number 317 318获取进程启动到当前时间的CPU时间(以毫秒为单位)。 319 320**系统能力:** SystemCapability.Utils.Lang 321 322**返回值:** 323 324| 类型 | 说明 | 325| -------- | -------- | 326| number | 返回经过的CPU时间。 | 327 328**示例:** 329 330```js 331var result = process.getPastCpuTime() ; 332``` 333 334 335## process.getSystemConfig<sup>8+</sup> 336 337getSystemConfig(name: number): number 338 339获取系统配置信息。 340 341**系统能力:** SystemCapability.Utils.Lang 342 343**参数:** 344 345| 参数名 | 类型 | 必填 | 说明 | 346| -------- | -------- | -------- | -------- | 347| name | number | 是 | 指定系统配置参数名。 | 348 349**返回值:** 350 351| 类型 | 说明 | 352| -------- | -------- | 353| number | 返回系统配置信息。 | 354 355**示例:** 356 357```js 358var _SC_ARG_MAX = 0 359var pres = process.getSystemConfig(_SC_ARG_MAX) 360``` 361 362 363## process.getEnvironmentVar<sup>8+</sup> 364 365getEnvironmentVar(name: string): string 366 367用该方法获取环境变量对应的值。 368 369**系统能力:** SystemCapability.Utils.Lang 370 371**参数:** 372 373| 参数名 | 类型 | 必填 | 说明 | 374| -------- | -------- | -------- | -------- | 375| name | string | 是 | 环境变量名。 | 376 377**返回值:** 378 379| 类型 | 说明 | 380| -------- | -------- | 381| string | 返回环境变量名对应的value。 | 382 383**示例:** 384 385```js 386var pres = process.getEnvironmentVar("PATH") 387``` 388 389 390## process.runCmd 391 392runCmd(command: string, options?: { timeout : number, killSignal : number | string, maxBuffer : number }): ChildProcess 393 394通过runcmd可以fork一个新的进程来运行一段shell,并返回ChildProcess对象。 395 396该接口为系统接口,三方应用不支持调用。 397 398**系统能力:** SystemCapability.Utils.Lang 399 400**参数:** 401 402| 参数名 | 类型 | 必填 | 说明 | 403| -------- | -------- | -------- | -------- | 404| command | string | 是 | shell命令。 | 405| options | Object | 否 | 相关选项参数。 | 406 407**表1** options 408 409| 名称 | 参数类型 | 必填 | 说明 | 410| -------- | -------- | -------- | -------- | 411| timeout | number | 否 | 子进程运行的ms数,当子进程运行时间超出此时间,则父进程发送killSignal信号给子进程。timeout默认为0。 | 412| killSignal | number \| string | 否 | 子进程运行时间超出timeout时,父进程发送killSignal 信号给子进程。killSignal 默认为'SIGTERM'。 | 413| maxBuffer | number | 否 | 子进程标准输入输出的最大缓冲区大小,当超出此大小时则终止子进程。maxBuffer默认1024\*1024。 | 414 415**返回值:** 416 417| 类型 | 说明 | 418| -------- | -------- | 419| [ChildProcess](#childprocess) | 子进程对象。 | 420 421**示例:** 422 423```js 424var child = process.runCmd('ls', { maxBuffer : 2 }); 425var result = child.wait(); 426child.getOutput.then(val=>{ 427 console.log("child.getOutput = " + val); 428}) 429``` 430 431 432## process.abort 433 434abort(): void 435 436该方法会导致进程立即退出并生成一个核心文件,谨慎使用。 437 438**系统能力:** SystemCapability.Utils.Lang 439 440**示例:** 441 442```js 443process.abort(); 444``` 445 446 447## process.on 448 449on(type: string, listener: EventListener): void 450 451存储用户所触发的事件。 452 453该接口为系统接口,三方应用不支持调用。 454 455**系统能力:** SystemCapability.Utils.Lang 456 457**参数:** 458 459| 参数名 | 类型 | 必填 | 说明 | 460| -------- | -------- | -------- | -------- | 461| type | string | 是 | 存储事件的type。 | 462| listener | EventListener | 是 | 回调的事件。 | 463 464**表2** EventListener 465 466| 名称 | 说明 | 467| -------- | -------- | 468| EventListener = (evt: Object) => void | 用户存储的事件。 | 469 470**示例:** 471 472```js 473process.on("data", (e)=>{ 474 console.log("data callback"); 475}) 476``` 477 478 479## process.off 480 481off(type: string): boolean 482 483删除用户存储的事件。 484 485该接口为系统接口,三方应用不支持调用。 486 487**系统能力:** SystemCapability.Utils.Lang 488 489**参数:** 490 491| 参数名 | 类型 | 必填 | 说明 | 492| -------- | -------- | -------- | -------- | 493| type | string | 是 | 删除事件的type。 | 494 495**返回值:** 496 497| 类型 | 说明 | 498| -------- | -------- | 499| boolean | 事件是否删除成功。 | 500 501**示例:** 502 503```js 504process.on("data", (e)=>{ 505 console.log("data callback"); 506}) 507var result = process.off("data"); 508``` 509 510 511## process.exit 512 513exit(code: number): void 514 515终止程序。 516 517请谨慎使用此接口。 518 519**系统能力:** SystemCapability.Utils.Lang 520 521**参数:** 522 523| 参数名 | 类型 | 必填 | 说明 | 524| -------- | -------- | -------- | -------- | 525| code | number | 是 | 进程的退出码。 | 526 527**示例:** 528 529```js 530process.exit(0); 531``` 532 533 534## process.cwd 535 536cwd(): string 537 538用该方法获取进程的工作目录。 539 540该接口为系统接口,三方应用不支持调用。 541 542**系统能力:** SystemCapability.Utils.Lang 543 544**示例:** 545 546```js 547var path = process.cwd(); 548``` 549 550 551## process.chdir 552 553chdir(dir: string): void 554 555更改进程的当前工作目录。 556 557该接口为系统接口,三方应用不支持调用。 558 559**系统能力:** SystemCapability.Utils.Lang 560 561**参数:** 562 563| 参数名 | 类型 | 必填 | 说明 | 564| -------- | -------- | -------- | -------- | 565| dir | string | 是 | 路径。 | 566 567**示例:** 568 569```js 570process.chdir('/system'); 571``` 572 573 574## process.uptime 575 576uptime(): number 577 578获取当前系统已运行的秒数。 579 580**系统能力:** SystemCapability.Utils.Lang 581 582**返回值:** 583 584| 类型 | 说明 | 585| -------- | -------- | 586| number | 当前系统已运行的秒数。 | 587 588**示例:** 589 590```js 591var time = process.uptime(); 592``` 593 594 595## process.kill 596 597kill(signal: number, pid: number): boolean 598 599发送signal到指定的进程,结束指定进程。 600 601**系统能力:** SystemCapability.Utils.Lang 602 603**参数:** 604 605| 参数名 | 类型 | 必填 | 说明 | 606| -------- | -------- | -------- | -------- | 607| pid | number | 是 | 进程的id。 | 608| signal | number | 是 | 发送的信号。 | 609 610**返回值:** 611 612| 类型 | 说明 | 613| -------- | -------- | 614| boolean | 信号是否发送成功。 | 615 616**示例:** 617 618```js 619var pres = process.pid 620var result = that.kill(28, pres) 621``` 622