1# 获取Native子进程退出信息 2<!--Kit: Ability Kit--> 3<!--Subsystem: Ability--> 4<!--Owner: @SKY2001--> 5<!--Designer: @jsjzju--> 6<!--Tester: @lixueqing513--> 7<!--Adviser: @huipeizi--> 8 9## 场景介绍 10 11从API version 20开始,支持父进程通过注册回调函数监听子进程,获取子进程异常退出信息,以便父进程做后续优化处理。这里支持监听的子进程必须为[OH_Ability_StartNativeChildProcess](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_startnativechildprocess)或[startNativeChildProcess](../reference/apis-ability-kit/js-apis-app-ability-childProcessManager.md#childprocessmanagerstartnativechildprocess13)接口创建的子进程。 12 13## 接口说明 14 15| 名称 | 描述 | 16| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | 17| [Ability_NativeChildProcess_ErrCode](../reference/apis-ability-kit/capi-native-child-process-h.md#ability_nativechildprocess_errcode) [OH_Ability_RegisterNativeChildProcessExitCallback](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_registernativechildprocessexitcallback) ([OH_Ability_OnNativeChildProcessExit](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_onnativechildprocessexit) onProcessExit) | 注册子进程退出回调函数。 | 18| [Ability_NativeChildProcess_ErrCode](../reference/apis-ability-kit/capi-native-child-process-h.md#ability_nativechildprocess_errcode) [OH_Ability_UnregisterNativeChildProcessExitCallback](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_unregisternativechildprocessexitcallback) ([OH_Ability_OnNativeChildProcessExit](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_onnativechildprocessexit) onProcessExit) | 解注册子进程退出回调函数。 | 19 20## 开发步骤 21 22 23**动态库文件** 24 25```txt 26libchild_process.so 27``` 28 29**头文件** 30 31```c++ 32#include <AbilityKit/native_child_process.h> 33``` 34 351. 主进程-注册和解注册Native子进程异常退出回调。 36 37 调用[OH_Ability_RegisterNativeChildProcessExitCallback](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_registernativechildprocessexitcallback)注册Native子进程,如果返回值为NCP_NO_ERROR表示注册成功。 38 调用[OH_Ability_UnregisterNativeChildProcessExitCallback](../reference/apis-ability-kit/capi-native-child-process-h.md#oh_ability_unregisternativechildprocessexitcallback)解注册Native子进程,如果返回值为NCP_NO_ERROR表示解注册成功。 39 40 ```c++ 41 #include <AbilityKit/native_child_process.h> 42 void OnNativeChildProcessExit(int32_t pid, int32_t signal) { 43 OH_LOG_INFO("pid: %{public}d, signal: %{public}d", pid, signal); 44 } 45 46 void RegisterNativeChildProcessExitCallback() 47 { 48 Ability_NativeChildProcess_ErrCode ret = OH_Ability_RegisterNativeChildProcessExitCallback(OnNativeChildProcessExit); 49 if (ret != NCP_NO_ERROR) { 50 OH_LOG_ERROR("register failed."); 51 } 52 } 53 54 void UnregisterNativeChildProcessExitCallback() 55 { 56 Ability_NativeChildProcess_ErrCode ret = OH_Ability_UnregisterNativeChildProcessExitCallback(OnNativeChildProcessExit); 57 if (ret != NCP_NO_ERROR) { 58 OH_LOG_ERROR("unregister failed."); 59 } 60 } 61 ``` 62 632. 主进程-添加编译依赖项。 64 65 修改CMaklist.txt添加必要的依赖库,假设主进程所在的so名称为libmainprocesssample.so(主进程和子进程的实现也可以选择编译到同一个动态库文件)。 66 67 ```txt 68 target_link_libraries(mainprocesssample PUBLIC 69 # 添加依赖的元能力动态库 70 libchild_process.so 71 72 # 其它依赖的动态库 73 # ... 74 ) 75 ``` 76