import psutil


def PID_取子进程ID列表(pid: int | str, 是否递归: bool = False) -> list[int]:
    """
    根据进程 PID 获取子进程 PID 列表。

    功能说明：
        - 默认仅返回直接子进程 PID。
        - 当“是否递归”为 True 时，会返回全部层级的子进程 PID。
        - 参数无效、进程不存在、无权限访问或发生异常时返回空列表。

    Args:
        pid (int | str): 要查询的进程 PID。
        是否递归 (bool): 是否递归获取全部子进程，默认为 False。

    Returns:
        list[int]: 成功返回子进程 PID 列表；失败返回空列表。
    """
    try:
        pid = int(pid)
        return [int(进程对象.pid) for 进程对象 in psutil.Process(pid).children(recursive=是否递归)]
    except Exception:
        return []
