

# ___x_cmd_tmo(){
#     local timeout_second="$1";  shift

#     local ___X_CMD_TMO_PROCESS_ID=$$
#     (
#         printf "Gonna kill process -> %s\n" "$___X_CMD_TMO_PROCESS_ID"
#         ___x_cmd_cmds sleep "$timeout_second" || return $?
#         ___x_cmd_cmds kill -s INT "$___X_CMD_TMO_PROCESS_ID"
#     ) &
#     local thelastprocess=$!

#     trap  'return 130' SIGINT
#     "$@"
#     local exitcode=$?
#     ___x_cmd_cmds kill -s INT "$thelastprocess" 2>/dev/null
#     return $exitcode
# }


___x_cmd_tmo(){
    [ $# -gt 0 ]    ||  set -- --help

    case "$1" in
        -h|--help)      ___x_cmd help -m tmp "$@"; return 0 ;;
    esac

    local ___X_CMD_TMO_TIMEOUT="$1";  shift
    (
        "$@"
    ) &

    local worker_process_id=$!
    (
        trap 'kill -s INT "$worker_process_id" 2>/dev/null' EXIT
        ___x_cmd_cmds sleep "$___X_CMD_TMO_TIMEOUT" || true
        ___x_cmd_cmds kill -s INT "$worker_process_id" 2>/dev/null
        return 0
    )
}
