摘要
终止提供的作业或进程。
声明
#include <zircon/syscalls.h>
zx_status_t zx_task_kill(zx_handle_t handle);
说明
此函数会异步终止指定进程或作业及其子进程(以递归方式),直到以 handle 为根的整个任务树都终止为止。不支持终止线程。
可以通过 ZX_TASK_TERMINATED 信号等待任务结束。当信号表明该程序已完成时,相应任务及其所有子任务会被视为处于终止状态,并且大多数操作将不再成功。
如果 handle 是一个作业,并且系统调用成功,则该作业将无法再用于创建新进程。
当进程或作业通过此系统调用被终止时,zx_object_get_info() 通过 ZX_INFO_PROCESS 或 ZX_INFO_JOB 主题报告的 return_code 为 ZX_TASK_RETCODE_SYSCALL_KILL。
进程和作业也可能会被其他代理(例如具有 ZX_POL_ACTION_KILL 的作业政策)终止,或者在系统内存不足时被 OOM 终止。
权限
句柄必须具有 ZX_RIGHT_DESTROY。
返回值
如果成功,zx_task_kill() 会返回 ZX_OK。如果进程使用此系统调用来终止自身,则此系统调用不会返回。
错误
ZX_ERR_BAD_HANDLE handle 不是有效的 handle。
ZX_ERR_WRONG_TYPE handle 不是任务句柄。
ZX_ERR_ACCESS_DENIED handle 没有 ZX_RIGHT_DESTROY 权限。
ZX_ERR_NOT_SUPPORTED handle 是线程句柄。