1# @ohos.process (获取进程相关的信息) 2<!--Kit: ArkTS--> 3<!--Subsystem: CommonLibrary--> 4<!--Owner: @xliu-huanwei; @shilei123; @huanghello--> 5<!--Designer: @yuanyao14--> 6<!--Tester: @kirl75; @zsw_zhushiwei--> 7<!--Adviser: @ge-yafang--> 8 9获取进程相关的信息,提供进程管理的相关功能。 10 11> **说明:** 12> 13> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15 16## 导入模块 17 18```ts 19import { process } from '@kit.ArkTS'; 20``` 21 22 23## 属性 24 25**系统能力:** SystemCapability.Utils.Lang 26 27**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 28 29| 名称 | 类型 | 只读 | 可选 | 说明 | 30| ---------------- | ------ | ---- | ---- | ---------------- | 31| uid | number | 是 | 否 | 进程的用户标识。 | 32| pid | number | 是 | 否 | 当前进程的pid。 | 33| tid<sup>8+</sup> | number | 是 | 否 | 当前线程的tid。 | 34 35 36## EventListener 37 38type EventListener = (evt: Object) => void 39 40用户存储的事件信息。 41 42**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 43 44**系统能力:** SystemCapability.Utils.Lang 45 46**参数:** 47 48| 参数名 | 类型 | 必填 | 说明 | 49| ------ | ------ | ---- | --------------- | 50| evt | Object | 是 | 用户事件。| 51 52## process.isIsolatedProcess<sup>8+</sup> 53 54isIsolatedProcess(): boolean 55 56检查进程是否已被隔离。 57 58**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 59 60**系统能力:** SystemCapability.Utils.Lang 61 62**返回值:** 63 64| 类型 | 说明 | 65| ------- | ------------------------------------------------------- | 66| boolean | 返回判断结果。如果进程被隔离则返回true,否则返回false。 | 67 68**示例:** 69 70```js 71let result = process.isIsolatedProcess(); 72``` 73 74 75## process.is64Bit<sup>8+</sup> 76 77is64Bit(): boolean 78 79检查运行环境是否为64位。 80 81**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 82 83**系统能力:** SystemCapability.Utils.Lang 84 85**返回值:** 86 87| 类型 | 说明 | 88| ------- | ----------------------------------------------------------- | 89| boolean | 返回判断结果。如果运行环境是64位则返回true,否则返回false。 | 90 91**示例:** 92 93```js 94let result = process.is64Bit(); 95``` 96 97 98## process.getStartRealtime<sup>8+</sup> 99 100getStartRealtime(): number 101 102获取系统启动到进程启动的实时时间(以毫秒为单位,不包含系统休眠时间)。 103 104**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 105 106**系统能力:** SystemCapability.Utils.Lang 107 108**返回值:** 109 110| 类型 | 说明 | 111| ------ | -------------------------------- | 112| number | 返回经过的实时时间。单位:毫秒。 | 113 114**示例:** 115 116```js 117let realtime = process.getStartRealtime(); 118``` 119 120## process.getPastCpuTime<sup>8+</sup> 121 122getPastCpuTime(): number 123 124获取进程启动到当前时间的CPU时间(以毫秒为单位)。 125 126**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 127 128**系统能力:** SystemCapability.Utils.Lang 129 130**返回值:** 131 132| 类型 | 说明 | 133| ------ | ------------------------------- | 134| number | 返回经过的CPU时间。单位:毫秒。 | 135 136**示例:** 137 138```js 139let result = process.getPastCpuTime(); 140``` 141 142 143## process.abort 144 145abort(): void 146 147该方法会导致进程立即退出并生成一个核心文件,谨慎使用。 148 149**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 150 151**系统能力:** SystemCapability.Utils.Lang 152 153**示例:** 154 155```js 156process.abort(); 157``` 158 159 160## process.uptime 161 162uptime(): number 163 164获取当前系统已运行的时间(以秒为单位)。 165 166**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 167 168**系统能力:** SystemCapability.Utils.Lang 169 170**返回值:** 171 172| 类型 | 说明 | 173| ------ | ---------------------- | 174| number | 当前系统已运行的时间。单位:秒。| 175 176**示例:** 177 178```js 179let time = process.uptime(); 180``` 181 182 183## process.kill<sup>(deprecated)</sup> 184 185kill(signal: number, pid: number): boolean 186 187发送信号到指定进程,结束该进程。 188 189> **说明:** 190> 191> 从API version 7开始支持,从API version 9开始废弃,建议使用[kill<sup>9+</sup>](#kill9)替代。 192 193**系统能力:** SystemCapability.Utils.Lang 194 195**参数:** 196 197| 参数名 | 类型 | 必填 | 说明 | 198| ------ | ------ | ---- | ------------ | 199| signal | number | 是 | 发送的信号。 | 200| pid | number | 是 | 进程的id。 | 201 202**返回值:** 203 204| 类型 | 说明 | 205| ------- | -----------------------------------| 206| boolean | 信号发送成功返回true,失败返回false。 | 207 208**示例:** 209 210```js 211let pres = process.pid; 212let result = process.kill(28, pres); 213``` 214 215 216## process.exit<sup>(deprecated)</sup> 217 218exit(code: number): void 219 220终止程序。 221 222请谨慎使用此接口。调用此接口后应用将退出。如果输入参数非0,可能会导致数据丢失或出现异常。 223 224> **说明:** 225> 226> 从API version 7开始支持,从API version 9开始废弃,建议使用[exit<sup>9+</sup>](#exit9)替代。 227 228**系统能力:** SystemCapability.Utils.Lang 229 230**参数:** 231 232| 参数名 | 类型 | 必填 | 说明 | 233| ------ | ------ | ---- | -------------- | 234| code | number | 是 | 进程的退出码。 | 235 236**示例:** 237 238```js 239process.exit(0); 240``` 241 242 243## process.getUidForName<sup>(deprecated)</sup> 244 245getUidForName(v: string): number 246 247根据指定的用户名,从系统的用户数据库中获取该用户的uid。 248 249> **说明:** 250> 251> 从API version 8开始支持,从API version 9开始废弃,建议使用[getUidForName<sup>9+</sup>](#getuidforname9)替代。 252 253**系统能力:** SystemCapability.Utils.Lang 254 255**参数:** 256 257| 参数名 | 类型 | 必填 | 说明 | 258| ------ | ------ | ---- | -------- | 259| v | string | 是 | 用户名。 | 260 261**返回值:** 262 263| 类型 | 说明 | 264| ------ | ------------- | 265| number | 返回用户uid。 | 266 267**示例:** 268 269```js 270let pres = process.getUidForName("tool"); 271``` 272 273 274## process.getThreadPriority<sup>(deprecated)</sup> 275 276getThreadPriority(v: number): number 277 278根据指定的tid获取线程优先级。 279 280> **说明:** 281> 282> 从API version 8开始支持,从API version 9开始废弃,建议使用[getThreadPriority<sup>9+</sup>](#getthreadpriority9)替代。 283 284**系统能力:** SystemCapability.Utils.Lang 285 286**参数:** 287 288| 参数名 | 类型 | 必填 | 说明 | 289| ------ | ------ | ---- | --------------- | 290| v | number | 是 | 指定的线程tid。 | 291 292**返回值:** 293 294| 类型 | 说明 | 295| ------ | ------------------------------------------------ | 296| number | 返回线程的优先级。优先级顺序取决于当前操作系统。 | 297 298**示例:** 299 300```js 301let tid = process.tid; 302let pres = process.getThreadPriority(tid); 303``` 304 305 306## process.isAppUid<sup>(deprecated)</sup> 307 308isAppUid(v: number): boolean 309 310判断uid是否属于应用程序。 311 312> **说明:** 313> 314> 从API version 8开始支持,从API version 9开始废弃,建议使用[isAppUid<sup>9+</sup>](#isappuid9)替代。 315 316**系统能力:** SystemCapability.Utils.Lang 317 318**参数:** 319 320| 参数名 | 类型 | 必填 | 说明 | 321| ------ | ------ | ---- | --------------- | 322| v | number | 是 | 应用程序的uid。 | 323 324**返回值:** 325 326| 类型 | 说明 | 327| ------- | ------------------------------------------------------------ | 328| boolean | 返回判断结果。如果是应用程序的uid则返回true,否则返回false。 | 329 330**示例:** 331 332```js 333let result = process.isAppUid(688); 334``` 335 336 337## process.getSystemConfig<sup>(deprecated)</sup> 338 339getSystemConfig(name: number): number 340 341获取系统配置信息。 342 343> **说明:** 344> 345> 从API version 8开始支持,从API version 9开始废弃,建议使用[getSystemConfig<sup>9+</sup>](#getsystemconfig9)替代。 346 347**系统能力:** SystemCapability.Utils.Lang 348 349**参数:** 350 351| 参数名 | 类型 | 必填 | 说明 | 352| ------ | ------ | ---- | -------------------- | 353| name | number | 是 | 指定系统配置参数名。 | 354 355**返回值:** 356 357| 类型 | 说明 | 358| ------ | ------------------ | 359| number | 返回系统配置信息。 | 360 361**示例:** 362 363```js 364let _SC_ARG_MAX = 0; 365let pres = process.getSystemConfig(_SC_ARG_MAX); 366``` 367 368 369## process.getEnvironmentVar<sup>(deprecated)</sup> 370 371getEnvironmentVar(name: string): string 372 373获取环境变量名对应的值。 374 375> **说明:** 376> 377> 从API version 8开始支持,从API version 9开始废弃,建议使用[getEnvironmentVar<sup>9+</sup>](#getenvironmentvar9)替代。 378 379**系统能力:** SystemCapability.Utils.Lang 380 381**参数:** 382 383| 参数名 | 类型 | 必填 | 说明 | 384| ------ | ------ | ---- | ------------ | 385| name | string | 是 | 环境变量名。 | 386 387**返回值:** 388 389| 类型 | 说明 | 390| ------ | --------------------------- | 391| string | 返回环境变量名对应的值。 | 392 393**示例:** 394 395```js 396let pres = process.getEnvironmentVar("PATH"); 397``` 398 399 400## ProcessManager<sup>9+</sup> 401 402提供用于新增进程的抛异常接口。 403 404构造ProcessManager对象。 405 406### isAppUid<sup>9+</sup> 407 408isAppUid(v: number): boolean 409 410判断uid是否属于当前应用程序。 411 412**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 413 414**系统能力:** SystemCapability.Utils.Lang 415 416**参数:** 417 418| 参数名 | 类型 | 必填 | 说明 | 419| ------ | ------ | ---- | --------------- | 420| v | number | 是 | 应用程序的uid。可通过process.uid获取。 | 421 422**返回值:** 423 424| 类型 | 说明 | 425| ------- | ------------------------------------------------------------ | 426| boolean | 返回判断结果。如果是应用程序的uid则返回true,否则返回false。 | 427 428**错误码:** 429 430以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 431 432| 错误码ID | 错误信息 | 433| -------- | -------- | 434| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 435 436**示例:** 437 438```js 439let pro = new process.ProcessManager(); 440// uid通过process.uid获取 441let pres = process.uid; 442let result = pro.isAppUid(pres); 443console.info("result: " + result); // result: true 444``` 445 446 447### getUidForName<sup>9+</sup> 448 449getUidForName(v: string): number 450 451根据指定的用户名,从系统的用户数据库中获取该用户uid。 452 453**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 454 455**系统能力:** SystemCapability.Utils.Lang 456 457**参数:** 458 459| 参数名 | 类型 | 必填 | 说明 | 460| ------ | ------ | ---- | -------- | 461| v | string | 是 | 用户名。 | 462 463**返回值:** 464 465| 类型 | 说明 | 466| ------ | ------------- | 467| number | 获取用户uid,如果用户不存在则返回-1。| 468 469**错误码:** 470 471以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 472 473| 错误码ID | 错误信息 | 474| -------- | -------- | 475| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 476 477**示例:** 478 479```js 480let pro = new process.ProcessManager(); 481let pres = pro.getUidForName("tool"); 482``` 483 484 485### getThreadPriority<sup>9+</sup> 486 487getThreadPriority(v: number): number 488 489根据指定的tid获取线程优先级。 490 491**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 492 493**系统能力:** SystemCapability.Utils.Lang 494 495**参数:** 496 497| 参数名 | 类型 | 必填 | 说明 | 498| ------ | ------ | ---- | --------------- | 499| v | number | 是 | 指定的线程tid。 | 500 501**返回值:** 502 503| 类型 | 说明 | 504| ------ | ------------------------------------------------ | 505| number | 返回线程的优先级。优先级顺序取决于当前操作系统。 | 506 507**错误码:** 508 509以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 510 511| 错误码ID | 错误信息 | 512| -------- | -------- | 513| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 514 515**示例:** 516 517```js 518let pro = new process.ProcessManager(); 519let tid = process.tid; 520let pres = pro.getThreadPriority(tid); 521``` 522 523 524### getSystemConfig<sup>9+</sup> 525 526getSystemConfig(name: number): number 527 528获取系统配置信息。 529 530**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 531 532**系统能力:** SystemCapability.Utils.Lang 533 534**参数:** 535 536| 参数名 | 类型 | 必填 | 说明 | 537| ------ | ------ | ---- | -------------------- | 538| name | number | 是 | 指定系统配置参数名。 | 539 540**返回值:** 541 542| 类型 | 说明 | 543| ------ | ------------------ | 544| number | 返回系统配置信息。如果配置不存在,返回-1。 | 545 546**错误码:** 547 548以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 549 550| 错误码ID | 错误信息 | 551| -------- | -------- | 552| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 553 554**示例:** 555 556```js 557let pro = new process.ProcessManager(); 558let _SC_ARG_MAX = 0; 559let pres = pro.getSystemConfig(_SC_ARG_MAX); 560``` 561 562 563### getEnvironmentVar<sup>9+</sup> 564 565getEnvironmentVar(name: string): string 566 567获取环境变量对应的值。 568 569> **说明:** 570> 571> 获取环境变量对应的值。如果环境变量不存在,返回undefined。 572 573**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 574 575**系统能力:** SystemCapability.Utils.Lang 576 577**参数:** 578 579| 参数名 | 类型 | 必填 | 说明 | 580| ------ | ------ | ---- | ------------ | 581| name | string | 是 | 环境变量名。 | 582 583**返回值:** 584 585| 类型 | 说明 | 586| ------ | ------------------------ | 587| string | 返回环境变量名对应的值。 | 588 589**错误码:** 590 591以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 592 593| 错误码ID | 错误信息 | 594| -------- | -------- | 595| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 596 597**示例:** 598 599```js 600let pro = new process.ProcessManager(); 601let pres = pro.getEnvironmentVar("PATH"); 602``` 603 604 605### exit<sup>9+</sup> 606 607exit(code: number): void 608 609终止程序。 610 611请谨慎使用此接口,此接口调用后应用会退出,如果入参非0会产生数据丢失或者异常情况。 612 613**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 614 615**系统能力:** SystemCapability.Utils.Lang 616 617**参数:** 618 619| 参数名 | 类型 | 必填 | 说明 | 620| ------ | ------ | ---- | -------------- | 621| code | number | 是 | 进程的退出码。 | 622 623**错误码:** 624 625以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 626 627| 错误码ID | 错误信息 | 628| -------- | -------- | 629| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 630 631**示例:** 632 633```js 634let pro = new process.ProcessManager(); 635pro.exit(0); 636``` 637 638 639### kill<sup>9+</sup> 640 641kill(signal: number, pid: number): boolean 642 643发送signal到指定的进程,结束指定进程(仅支持结束本进程)。 644 645**原子化服务API:** 从API version 11开始,该接口支持在原子化服务中使用。 646 647**系统能力:** SystemCapability.Utils.Lang 648 649**参数:** 650 651| 参数名 | 类型 | 必填 | 说明 | 652| ------ | ------ | ---- | ------------ | 653| signal | number | 是 | 发送特定的信号给目标进程。 取值范围:1 <= signal <= 64。| 654| pid | number | 是 | 进程的id。 | 655 656**返回值:** 657 658| 类型 | 说明 | 659| ------- | ------------------------------------------------------------ | 660| boolean | 信号是否发送成功。如果信号发送成功则返回true,否则返回false。 | 661 662**错误码:** 663 664以下错误码的详细介绍请参见[通用错误码](../errorcode-universal.md)。 665 666| 错误码ID | 错误信息 | 667| -------- | -------- | 668| 401 | Parameter error. Possible causes: 1. Mandatory parameters are left unspecified; 2. Incorrect parameter types. | 669 670**示例:** 671 672```js 673let pro = new process.ProcessManager(); 674let pres = process.pid; 675let result = pro.kill(28, pres); 676```