最新资讯

  • Linux信号处理详解:从基本概念到高级应用

Linux信号处理详解:从基本概念到高级应用

2025-04-27 04:01:25 1 阅读

个人主页:chian-ocean

文章专栏-Linux

前言:

在Linux系统中,信号(Signal)是操作系统用来通知进程发生某些事件的一种机制。信号是一种软件中断机制,可以被进程用来响应特定的事件,如终止进程、暂停进程、重新加载配置等。信号机制是Unix及其衍生系统的核心功能之一

什么是信号

生活中的信号也可以理解为一种通过特定方式传递信息、指令或警告的方式。在日常生活中,信号无处不在,帮助我们理解周围环境并做出反应。以下是一些常见的生活中的信号:

  • 交通灯:交通信号灯(红灯、绿灯、黄灯)是最常见的生活信号之一。通过颜色的变化来指示司机和行人是“停车”、“前进”还是“等待”。

  • 语言表达:人们通过语言交流时,语气、词汇、语法等本身就是信号。例如,愤怒的语气、温柔的话语或请求,都传递了不同的情感或意图。

  • 手机通知:手机的振动或铃声是用来提示有来电、短信、邮件等通知的信号。

  • 天气变化:天气的变化可以是自然界给我们发出的信号。例如,乌云密布通常预示着即将下雨,气温变化可能暗示季节的变化。

Linux中常见的信号

  • SIGINT (2):中断信号,通常由用户通过Ctrl+C触发。默认行为是终止进程。(退出码也是异常退出)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • SIGKILL (9):强制终止进程信号,进程无法捕获或忽略该信号,收到后立即终止进程。

信号的概念

信号是操作系统用来与进程交互的一种方式,通过信号,操作系统能够控制进程的执行流,处理错误或执行特定任务。

  • 查看信号:
kill -l

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

信号的处理方式

进程可以根据不同需求对信号进行以下三种处理:

  1. 忽略信号:进程可以选择忽略某个信号。例如,使用 signal(SIGINT, SIG_IGN) 忽略 SIGINT 信号,进程将不会因按下 Ctrl+C 而被终止。

  2. 自定义处理信号:进程可以为信号指定一个自定义的信号处理函数。进程接收到信号时,操作系统会调用该函数来处理信号。例如,可以通过 signal(SIGTERM, my_handler) 设置当进程接收到 SIGTERM 信号时,调用 my_handler() 函数进行处理。

  3. 默认处理:如果进程没有特别指定对某个信号的处理方式,操作系统会采用默认行为。例如,默认情况下 SIGINT 信号会终止进程,SIGSEGV 会让进程崩溃。

signal函数

sighandler_t signal(int signum, sighandler_t handler);

typedef void (*sighandler_t)(int);//函数指针类型 参数是int 返回值是void

参数说明

  • signum:要捕获的信号编号。它是一个整数值,表示特定的信号。例如,SIGINT 用来捕获中断信号(Ctrl+C),SIGTERM 用来请求终止进程等。

  • handler:信号处理函数。当进程接收到指定的信号时,操作系统会调用这个函数。这个函数应该符合 sighandler_t 类型(通常是 void handler(int sig) 类型的函数)。

信号的产生

通过终端按键产⽣信号

  • Ctrl + C : 本质是2号信号。
  • Ctrl + Z : 本质是3号信号。
#include     
#include    
#include       
#include       
#include        

// 信号处理函数
void myheander(int signo)
{
    std::cout << "signo: " << signo << std::endl;  // 输出捕获到的信号编号
    sleep(3);  // 模拟处理信号的延时操作
    exit(1);  // 退出程序,返回1表示异常终止
}

int main()
{
    while(true)  // 无限循环,模拟程序持续运行
    {
        signal(SIGINT, myheander);  // 设置 SIGINT 信号的处理函数为 myheander
        std::cout << "The process is running ...   Pid: " << getpid() << std::endl;  // 输出进程的PID
        sleep(1);  // 每秒输出一次当前的进程信息
    }
    return 0;  // 退出程序,理论上不会执行到这行代码
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分析

  • 在左侧的终端中,程序输出 "The process is running ..." 和对应的进程ID(例如,Pid: 26956)。当用户按下 Ctrl+C(产生 SIGINT 信号)时,程序捕获到信号并打印 "signo: 2"
  • 右侧的终端展示了用户通过 kill -2 27041 命令向进程ID为 27041 的进程发送 SIGINT 信号。
    • kill 命令用于向进程发送信号。-2SIGINT 信号的数字表示(等同于按 Ctrl+C),27041 是目标进程的进程ID。

同理Ctrl + Z一样子可以得到证明。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通过kill在终端杀死进程

  • 在终端中用 kill杀死进程

通过函数产生信号

kill

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

int kill(pid_t pid , int sig);

参数

  • pid :目标进程的PID(进程ID)。可以指定一个特定进程,或者发送信号给进程组或所有进程:

    • 如果 pid 是一个正数,表示发送信号给 PID 对应的进程。
    • 如果 pid 是 0,表示向与当前进程同属一组的所有进程发送信号。
    • 如果 pid 是 -1,表示向所有进程发送信号。
  • sig:要发送的信号。可以使用预定义的信号常量,如 SIGINTSIGKILL

#include   
#include   
#include      
#include       
#include       


int main()
{
    int cnt = 5;  // 定义一个计数器,控制循环次数
    while(cnt--)  // 循环5次
    {
        signal(SIGQUIT, myheander);  // 设置 SIGQUIT 信号的处理函数为 myheander
        std::cout << "The process is running ...   Pid: " << getpid() << std::endl;  // 输出当前进程的PID
        sleep(1);  // 每秒输出一次当前进程的信息
    }

    kill(getpid(), SIGKILL);  // 发送 SIGKILL 信号终止当前进程
    return 0;  // 程序结束
}
  • 信号处理

    • 当程序收到 SIGQUIT 信号时,调用 myheander 函数,打印信号编号并退出程序。
  • 循环

    • 程序通过一个循环执行5次,每次输出进程信息并设置信号处理。
  • 强制退出

    • 在循环结束后,程序通过 kill(getpid(), SIGKILL) 发送 SIGKILL 信号来强制结束当前进程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 通过9号信号直接杀死进程。

  • kill 命令用于向进程发送信号。-2SIGINT 信号的数字表示(等同于按 Ctrl+C),27041 是目标进程的进程ID。

raise

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • sig:指定要发送的信号,可以是任何有效的信号常量
#include   
#include   
#include      
#include       
#include     

int main()
{
    int cnt = 5;  // 定义一个计数器,循环5次
    while(cnt--)  // 每次循环减少计数器
    {
        signal(SIGQUIT, myheander);  // 设置 SIGQUIT 信号的处理函数为 myheander
        std::cout << "The process is running ...   Pid: " << getpid() << std::endl;  // 输出当前进程的PID
        sleep(1);  // 每秒输出一次进程信息
    }

    raise(SIGKILL);  // 发送 SIGKILL 信号,强制终止当前进程
    return 0;  // 程序结束(实际上不会执行到这里,因为进程会在发送 SIGKILL 后被终止)
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 效果是和kill是一样的。
  • raise:用于在进程内部模拟或触发信号,通常用于程序自身的信号处理或测试。raise 向调用它的进程发送信号,并由该进程的信号处理函数处理该信号。
  • kill:用于进程间的通信,可以用于发送信号给任何进程或进程组。kill 常用于终止进程、暂停进程等操作。

abort

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

#include   
#include   
#include      
#include       
#include     

int main()
{
    int cnt = 5;  // 定义计数器,循环执行5次
    while(cnt--)  // 计数器递减,每次循环执行
    {
        signal(SIGQUIT, myheander);  // 设置 SIGQUIT 信号的处理函数为 myheander
        std::cout << "The process is running ...   Pid: " << getpid() << std::endl;  // 输出当前进程的PID
        sleep(1);  // 每隔1秒输出一次进程状态
    }

    abort();  // 强制终止当前进程,并生成核心转储(如果启用)
    
    return 0;  // 这行代码不会执行,因为进程已经在 abort() 后终止
}

abort()

  • abort() 被调用时,程序会立即中止,并且通常会生成一个核心转储(如果启用了核心转储)。abort() 会发送 SIGABRT 信号,导致进程异常终止,不会进行正常的清理操作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

验证6号信号:

#include 
#include 
#include 
#include 
#include 

void myheander(int signo)
{
    std::cout << "SIGABRT----"<<"signo: " << signo <<std::endl;
    exit(1);
}

int main()
{
    int cnt = 5;
    signal(SIGABRT,myheander);
    while(cnt--)
    {
        signal(SIGQUIT, myheander);
        std::cout << "The process is running ...   Pid: " << getpid() <<std::endl;
        sleep(1);
    }
    abort();
    return 0;
}

执行

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

异常

0错误

#inclde<iostream>

int main()
{
    int x = 10;
    int y = 0;
    int c = x / y;

    std::cout << "Calculation completed"<<std::endl; 

    return 0;
}

触发原理

  • CPU检测:CPU (依赖:算术逻辑单元(ALU))在执行除法时,检查除数是否为零,触发异常。
  • 硬件中断:触发硬件中断或陷阱,操作系统介入。
  • 操作系统处理:操作系统处理异常,可能发送信号给进程。
  • 信号响应:进程根据是否捕获信号来决定是否处理或终止。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

野指针错误

#include 
#include 
#include 
#include 
#include 


int main()
{
    int *p = NULL;
    *p = 10;

    std::cout << "completed"<<std::endl; 

    
    return 0;
}
  • 操作系统通过内存管理单元(MMU)来监控进程对内存的访问。当进程试图访问未分配、保护或非法的内存地址时,MMU 会触发硬件中断,报告错误给操作系统。

  • 操作系统检测到该非法访问后,通常会通过发出 SIGSEGV 信号终止程序,并可能生成核心转储文件(core dump),以便开发人员进行调试。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

软件条件(alarm)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

unsigned int alarm(unsigned int seconds);

参数

  • seconds:指定定时器的时间,单位为秒。函数会在 seconds 秒后触发 SIGALRM 信号,通知进程时间到达。

返回值

  • 返回值:该函数返回当前定时器剩余的时间(即上一个定时器设定的秒数),如果没有设置定时器,则返回 0
#include 
#include 
#include 
#include 
#include 


void myheander(int signo)
{
    std::cout << "SIGABRT----"<<"signo: " << signo <<std::endl;
    int ret =alarm(2);
    std:: cout << ret<<std::endl;
}

int main()
{   signal(SIGALRM,myheander);
    unsigned int n = 5;
    alarm(20);
    while(n--)
    {
        std::cout << "process id running.."<<"Pid: "<<getpid()<<std::endl;
        sleep(1);
    }

    
    return 0;
}
  • 等待闹钟的响应。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看到在在第四秒的时候发送14号信号(alarm),alarm的返回值是16.

本文地址:https://www.vps345.com/2798.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 javascript 前端 chrome edge 进程 操作系统 进程控制 Ubuntu ssh python MCP 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 ubuntu deepseek Ollama 模型联网 API CherryStudio RTSP xop RTP RTSPServer 推流 视频 数据库 centos oracle 关系型 安全 分布式 filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 HCIE 华为 数通 java 面试 性能优化 jdk intellij-idea 架构 numpy harmonyos 开发语言 typescript 计算机网络 c# GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn flutter macos adb udp unity php android Dell R750XS tcp/ip rust http ssl 鸿蒙 fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse 深度学习 YOLO 目标检测 计算机视觉 人工智能 笔记 tomcat maven intellij idea docker 实时音视频 Windsurf vscode 智能路由器 外网访问 内网穿透 端口映射 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 容器 .netcore nginx 监控 自动化运维 大数据 大数据平台 windows Qwen2.5-coder 离线部署 运维开发 websocket .net pycharm ide 前端框架 pip conda WSL2 django flask web3.py 开源 jmeter 软件测试 DeepSeek-R1 API接口 sqlserver live555 rtsp rtp node.js json html5 firefox WSL win11 无法解析服务器的名称或地址 apache web安全 Kali Linux 黑客 渗透测试 信息收集 计算机外设 电脑 mac 软件需求 vue3 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 golang asm jenkins gitee spring boot github 创意 社区 微信 微信分享 Image wxopensdk 嵌入式硬件 AI Agent cpu 内存 实时 使用 C语言 c++ Hyper-V WinRM TrustedHosts DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 react.js 前端面试题 持续部署 YOLOv8 NPU Atlas800 A300I pro asi_bench YOLOv12 vim c语言 qt stm32项目 单片机 stm32 pytorch transformer 科技 ai 个人开发 后端 AI编程 物联网 iot 产品经理 agi microsoft cuda cudnn anaconda 微服务 springcloud C 环境变量 进程地址空间 oceanbase rc.local 开机自启 systemd 麒麟 嵌入式 linux驱动开发 arm开发 redis mybatis ping++ 机器学习 深度优先 图论 并集查找 换根法 树上倍增 ollama llm chatgpt 大模型 llama3 Chatglm 开源大模型 僵尸进程 经验分享 学习方法 学习 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 ffmpeg 音视频 ollama下载加速 vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 温湿度数据上传到服务器 Arduino HTTP 银河麒麟服务器操作系统 系统激活 uni-app 负载均衡 ESP32 豆瓣 追剧助手 迅雷 nas LDAP 腾讯云 make命令 makefile文件 虚拟化 半虚拟化 硬件虚拟化 Hypervisor ESXi 远程工作 matlab 边缘计算 智能硬件 micropython esp32 mqtt elasticsearch ip命令 新增网卡 新增IP 启动网卡 IIS服务器 IIS性能 日志监控 Docker Hub docker pull 镜像源 daemon.json Linux Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 能力提升 面试宝典 技术 IT信息化 iftop 网络流量监控 鸿蒙系统 华为云 zabbix gpu算力 git code-server MQTT mosquitto 消息队列 爬虫 数据集 安卓 svn r语言 数据挖掘 数据可视化 数据分析 postgresql pgpool LLM 大模型面经 职场和发展 Deepseek 大模型学习 缓存 计算机 程序员 田俊楠 kubernetes k8s sqlite HarmonyOS Next DevEco Studio dubbo MS Materials 自动化 WebUI DeepSeek V3 DeepSeek AI大模型 openssl 密码学 gateway Clion Nova ResharperC++引擎 Centos7 远程开发 业界资讯 模拟退火算法 shell kamailio sip VoIP echarts 信息可视化 网页设计 文件系统 路径解析 数据库系统 threejs 3D pillow efficientVIT YOLOv8替换主干网络 TOLOv8 spring cloud kafka hibernate jar gradle 课程设计 remote-ssh mongodb 编辑器 Dify rust腐蚀 mysql 统信 国产操作系统 虚拟机安装 系统架构 框架搭建 spring W5500 OLED u8g2 TCP服务器 chfs ubuntu 16.04 其他 VMware安装Ubuntu Ubuntu安装k8s 微信小程序 小程序 RustDesk自建服务器 rustdesk服务器 docker rustdesk RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 孤岛惊魂4 WebRTC gpt 华为od OD机试真题 华为OD机试真题 服务器能耗统计 医疗APP开发 app开发 恒源云 bash 云原生 k8s集群资源管理 云原生开发 hadoop 程序人生 vSphere vCenter 软件定义数据中心 sddc RTMP 应用层 jupyter 低代码 gitlab 雨云 NPS 大模型微调 open webui 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 selete 高级IO 技能大赛 传统数据库升级 银行 大语言模型 LLMs webrtc ros2 moveit 机器人运动 https java-ee opcua opcda KEPServer安装 AIGC oneapi eureka XCC Lenovo 繁忙 服务器繁忙 解决办法 替代网站 汇总推荐 AI推理 selenium 测试工具 dba okhttp eNSP 网络规划 VLAN 企业网络 pdf wireshark 显示过滤器 安装 ICMP Wireshark安装 VSCode pygame 多线程服务器 Linux网络编程 移动云 android studio linux环境变量 1024程序员节 springsecurity6 oauth2 授权服务器 token sas FTP 服务器 skynet prometheus k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 visualstudio 硬件架构 服务器部署ai模型 部署 SSL 域名 rsyslog ci/cd devops list 数据结构 raid5数据恢复 磁盘阵列数据恢复 fpga开发 Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 Trae IDE AI 原生集成开发环境 Trae AI 3d 灵办AI visual studio code mcu 驱动开发 硬件工程 嵌入式实习 Docker Compose docker compose docker-compose pyqt 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 Kylin-Server 服务器安装 EasyConnect Cline ecmascript nextjs react reactjs TRAE 图形化界面 Playwright 自动化测试 流式接口 RAID RAID技术 磁盘 存储 搜索引擎 ssrf 失效的访问控制 GCC crosstool-ng openwrt dify ux 多线程 Google pay Apple pay 服务器主板 AI芯片 信息与通信 open Euler dde deepin 统信UOS 交互 wsl2 wsl 网工 opensearch helm 代码调试 ipdb xrdp 远程桌面 远程连接 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap AI代码编辑器 游戏服务器 TrinityCore 魔兽世界 多层架构 解耦 adobe Python 网络编程 聊天服务器 套接字 TCP 客户端 Socket 政务 分布式系统 监控运维 Prometheus Grafana 环境迁移 分析解读 崖山数据库 YashanDB tcpdump 源码剖析 rtsp实现步骤 流媒体开发 Ubuntu 24.04.1 轻量级服务器 NFS redhat rocketmq virtualenv 雨云服务器 sqlite3 netty rpc 远程过程调用 Windows环境 etcd 数据安全 RBAC 直播推流 企业微信 Linux24.04 金融 毕设 腾讯云大模型知识引擎 相差8小时 UTC 时间 Java 报错 kvm 无桌面 命令行 excel gitea 媒体 微信公众平台 risc-v protobuf 序列化和反序列化 串口服务器 MacMini Mac 迷你主机 mini Apple webstorm JAVA Invalid Host allowedHosts vue 强制清理 强制删除 mac废纸篓 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos bootstrap html web C# MQTTS 双向认证 emqx springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 css ecm bpm 压测 ECS VR手套 数据手套 动捕手套 动捕数据手套 Ark-TS语言 宕机切换 服务器宕机 bonding 链路聚合 压力测试 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 多进程 idm 数学建模 远程 命令 执行 sshpass 操作 Minecraft ddos 命名管道 客户端与服务端通信 express av1 电视盒子 机顶盒ROM 魔百盒刷机 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 zotero WebDAV 同步失败 代理模式 ansible playbook firewalld VMware安装mocOS VMware macOS系统安装 iDRAC R720xd freebsd debian PVE KVM gcc dell服务器 ArcTS 登录 ArcUI GridItem go arkUI IIS .net core Hosting Bundle .NET Framework vs2022 XFS xfs文件系统损坏 I_O error es jvm 磁盘监控 chrome devtools chromedriver 服务器配置 rabbitmq 生物信息学 目标跟踪 OpenVINO 推理应用 openEuler 开机自启动 状态管理的 UDP 服务器 Arduino RTOS 虚拟机 系统开发 binder 车载系统 framework 源码环境 X11 Xming Cursor ue4 着色器 ue5 虚幻 集成学习 集成测试 QQ 机器人 bot Docker minio Linux PID Reactor 设计模式 C++ mariadb 小游戏 五子棋 交换机 硬件 设备 GPU PCI-Express jetty undertow UOS 统信操作系统 yum nvidia kylin 智能手机 NAS Termux Samba 进程信号 CLion Erlang OTP gen_server 热代码交换 事务语义 软件工程 ip 图像处理 音乐服务器 Navidrome 音流 curl wget Dell HPE 联想 浪潮 混合开发 环境安装 JDK ruoyi 跨域 DeepSeek行业应用 Heroku 网站部署 蓝桥杯 mysql离线安装 ubuntu22.04 mysql8.0 MQTT协议 消息服务器 代码 hugo RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 具身智能 asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 nuxt3 springboot centos-root /dev/mapper yum clean all df -h / du -sh 设置代理 实用教程 测试用例 功能测试 AI写作 AI作画 next.js 部署next.js 聊天室 基础入门 编程 linux 命令 sed 命令 Redis Desktop 服务器管理 宝塔面板 配置教程 网站管理 剧本 muduo SSH 服务 SSH Server OpenSSH Server 蓝耘科技 元生代平台工作流 ComfyUI 博客 向日葵 sql KingBase minicom 串口调试工具 grafana IPMI unix 飞牛NAS 飞牛OS MacBook Pro 漏洞 kind 微信开放平台 微信公众号配置 安全威胁分析 Ubuntu Server Ubuntu 22.04.5 vscode 1.86 mq Nuxt.js SSH Xterminal safari 系统 弹性计算 云服务器 裸金属服务器 弹性裸金属服务器 unity3d docker命令大全 银河麒麟 kylin v10 麒麟 v10 5G 3GPP 卫星通信 网络穿透 指令 aws googlecloud CPU 主板 电源 网卡 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 CORS c/c++ 串口 群晖 监控k8s 监控kubernetes 分布式训练 vasp安装 查询数据库服务IP地址 SQL Server 语音识别 AutoDL ios iphone arm 影刀 #影刀RPA# EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 实习 Claude tcp 用户缓冲区 c 模拟实现 AnythingLLM AnythingLLM安装 支付 微信支付 开放平台 系统安全 华为认证 网络工程师 outlook 反向代理 cnn DenseNet 银河麒麟高级服务器 外接硬盘 Kylin 国产化 CrewAI flink qemu libvirt 华为机试 bug WebVM AISphereButler SenseVoice can 线程池 版本 GoogLeNet ukui 麒麟kylinos openeuler npm 信号处理 Kali 渗透 游戏程序 并查集 leetcode 回显服务器 UDP的API使用 MacOS录屏软件 做raid 装系统 BMC mamba Vmamba Java Applet URL操作 服务器建立 Socket编程 网络文件读取 大模型入门 大模型教程 火绒安全 linux上传下载 升级 CVE-2024-7347 rustdesk VPS VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 需求分析 规格说明书 USB网络共享 监控k8s集群 集群内prometheus CH340 串口驱动 CH341 uart 485 无人机 ftp Ubuntu22.04 开发人员主页 飞书 trea idea ssh漏洞 ssh9.9p2 CVE-2025-23419 uniapp ArkTs ArkUI web3 vscode1.86 1.86版本 ssh远程连接 Cookie docker run 数据卷挂载 交互模式 vmware 卡死 bcompare Beyond Compare 模拟器 教程 自动化编程 big data 知识库 RAGFlow 本地知识库部署 DeepSeek R1 模型 etl ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 单一职责原则 IPMITOOL 硬件管理 飞牛 spark HistoryServer Spark YARN jobhistory linux安装配置 CDN Headless Linux kali 共享文件夹 键盘 asp.net大文件上传下载 嵌入式Linux IPC 中间件 iis 云服务 可信计算技术 EMUI 回退 降级 鲲鹏 telnet 远程登录 apt 僵尸世界大战 游戏服务器搭建 银河麒麟操作系统 实战案例 ui 安全架构 zookeeper nfs perf rime embedding Anolis nginx安装 linux插件下载 hive DBeaver 数据仓库 kerberos 网络用户购物行为分析可视化平台 大数据毕业设计 自定义客户端 SAS 产测工具框架 IMX6ULL 管理框架 阿里云ECS 链表 LORA NLP openstack Xen cfssl v10 软件 camera Arduino 电子信息 ldap armbian u-boot 单元测试 nac 802.1 portal edge浏览器 banner elk Logstash 日志采集 黑客技术 URL rdp 远程服务 本地部署 api trae MI300x SSE 稳定性 看门狗 ROS 自动驾驶 Typore LLM Web APP Streamlit cpp-httplib tensorflow 实时互动 ceph Linux环境 开发环境 SSL证书 sysctl.conf vm.nr_hugepages 网络结构图 yaml Ultralytics 可视化 tidb GLIBC OpenSSH 深度求索 私域 交叉编译 python3.11 视频编解码 gpt-3 文心一言 视觉检测 文件分享 网络攻击模型 VMware创建虚拟机 性能测试 大模型应用 odoo 服务器动作 Server action 远程控制 远程看看 远程协助 序列化反序列化 sentinel ruby IPv4 子网掩码 公网IP 私有IP 匿名管道 主从复制 代码托管服务 frp 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 seatunnel 小艺 Pura X composer wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 Ubuntu共享文件夹 共享目录 Linux共享文件夹 佛山戴尔服务器维修 佛山三水服务器维修 ipython Linux的基础指令 swoole 三级等保 服务器审计日志备份 FTP服务器 宠物 毕业设计 免费学习 宠物领养 宠物平台 P2P HDLC 思科 昇腾 npu 联想开天P90Z装win10 多个客户端访问 IO多路复用 TCP相关API 双系统 GRUB引导 Linux技巧 单例模式 干货分享 黑客工具 密码爆破 架构与原理 软考 xml C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 uv glibc 互信 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 tailscale derp derper 中转 triton 模型分析 矩阵 线性代数 电商平台 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors 程序员创富 IDEA IO模型 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 软负载 AI-native Docker Desktop DOIT 四博智联 Unity Dedicated Server Host Client 无头主机 lua vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 虚拟显示器 7z cmos 输入法 cursor MCP server C/S windows日志 prompt 端口测试 keepalived 常用命令 文本命令 目录命令 n8n 工作流 workflow 重启 排查 系统重启 日志 原因 xshell termius iterm2 thingsboard 音乐库 neo4j 数据库开发 database H3C rnn 安防软件 服务网格 istio midjourney arcgis 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 g++ g++13 前后端分离 xcode IMX317 MIPI H265 VCU pyautogui FunASR ASR file server http server web server Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer Jellyfin LInux 软件构建 实验 技术共享 我的世界服务器搭建 王者荣耀 Wi-Fi DNS Spring Security 语法 线程 我的世界 我的世界联机 数码 本地部署AI大模型 代理 超融合 黑苹果 ISO镜像作为本地源 DeepSeek r1 Open WebUI 执法记录仪 智能安全帽 smarteye cd 目录切换 云电竞 云电脑 todesk sdkman SysBench 基准测试 OpenManus 宝塔 图形渲染 eclipse 国内源 MNN Qwen 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 alias unalias 别名 游戏引擎 策略模式 自学笔记 小米 澎湃OS Android 源码 bat SWAT 配置文件 服务管理 网络共享 gaussdb regedit 开机启动 dns是什么 如何设置电脑dns dns应该如何设置 银河麒麟桌面操作系统 Kylin OS xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 迁移指南 pppoe radius Hive环境搭建 hive3环境 Hive远程模式 ocr AI agent webgl 思科模拟器 Cisco 京东云 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 IM即时通讯 剪切板对通 HTML FORMAT saltstack 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 权限 自动化任务管理 算力 Radius easyui langchain uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 qt项目 qt项目实战 qt教程 flash-attention ragflow 计算虚拟化 弹性裸金属 飞牛nas fnos 工业4.0 log4j windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 根服务器 clickhouse yum源切换 更换国内yum源 epoll 社交电子 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 EMQX 通信协议 VS Code fd 文件描述符 小智AI服务端 xiaozhi TTS 直流充电桩 充电桩 vr 移动魔百盒 junit matplotlib USB转串口 AD 域管理 网站搭建 serv00 less 邮件APP 免费软件 显示管理器 lightdm gdm 同步 备份 建站 阻塞队列 生产者消费者模型 服务器崩坏原因 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? laravel Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 历史版本 下载 免费域名 域名解析 p2p DocFlow Netty 即时通信 NIO 毕昇JDK dns HTTP 服务器控制 ESP32 DeepSeek minecraft 备选 网站 调用 示例 AD域 致远OA OA服务器 服务器磁盘扩容 Linux的权限 游戏机 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 粘包问题 Python基础 Python教程 Python技巧 WLAN SVN Server tortoise svn 镜像 wpf 软链接 硬链接 PX4 figma navicat ABAP cocoapods 基础环境 流水线 脚本式流水线 yolov8 Attention 存储维护 NetApp存储 EMC存储 内网服务器 内网代理 内网通信 问题解决 ubuntu24 vivado24 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 kotlin ssh远程登录 vpn 虚幻引擎 virtualbox 浏览器开发 AI浏览器 autodl MacOS 烟花代码 烟花 元旦 性能调优 安全代理 IMM 嵌入式系统开发 智能音箱 智能家居 wps 程序 Mac内存不够用怎么办 磁盘清理 powerpoint 环境配置 dity make gnu 代理服务器 中兴光猫 换光猫 网络桥接 自己换光猫 searxng PPI String Cytoscape CytoHubba Qwen2.5-VL vllm Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 多端开发 智慧分发 应用生态 鸿蒙OS wsgiref Web 服务器网关接口 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 抗锯齿 word 拓扑图 su sudo GIS 遥感 WebGIS 知识图谱 firewall ardunio BLE deekseek 大大通 第三代半导体 碳化硅 Windows ai工具 TCP协议 java-rocketmq milvus QT 5.12.12 QT开发环境 Ubuntu18.04 健康医疗 互联网医院 内网环境 元服务 应用上架 h.264 换源 Debian 项目部署到linux服务器 项目部署过程 MVS 海康威视相机 x64 SIGSEGV xmm0 推荐算法 聚类 网卡的名称修改 eth0 ens33 性能分析 win服务器架设 windows server rag 大模型部署 查看显卡进程 fuser 虚拟局域网 SRS 流媒体 直播 ArtTS Deepseek-R1 私有化部署 推理模型 强化学习 proxy模式 onlyoffice 在线office dash 正则表达式 db 显卡驱动 极限编程 容器技术 CentOS UOS1070e jina SSH 密钥生成 SSH 公钥 私钥 生成 人工智能生成内容 信创 信创终端 中科方德 信号 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 iperf3 带宽测试 seleium 对比 工具 meld DiffMerge 加解密 Yakit yaklang 开发 visual studio lio-sam SLAM KylinV10 麒麟操作系统 Vmware 项目部署 nvm whistle ranger MySQL8.0 流量运营 Node-Red 编程工具 流编程 iBMC UltraISO 防火墙 NAT转发 NAT Server ubuntu24.04.1 aarch64 编译安装 HPC ros 端口 查看 ss sonoma 自动更新 域名服务 DHCP 符号链接 配置 deployment daemonset statefulset cronjob 读写锁 AI Agent 字节智能运维 办公自动化 自动化生成 pdf教程 树莓派 VNC fast Unity插件 iventoy VmWare OpenEuler css3 HarmonyOS NEXT 原生鸿蒙 云桌面 微软 AD域控 证书服务器 ShenTong TrueLicense 合成模型 扩散模型 图像生成 fstab ragflow 源码启动 运维监控 HarmonyOS OpenHarmony 真机调试 端口聚合 windows11 鸿蒙开发 移动开发 Linux find grep 钉钉 UDP react native 游戏开发 sequoiaDB 带外管理 捆绑 链接 谷歌浏览器 youtube google gmail 抓包工具 System V共享内存 进程通信 grub 版本升级 扩容 服务器时间 miniapp 调试 debug 断点 网络API请求调试方法 HiCar CarLife+ CarPlay QT RK3588 prometheus数据采集 prometheus数据模型 prometheus特点 相机 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 docker desktop image 大模型推理 网络建设与运维 NLP模型 xpath定位元素 llama.cpp top Linux top top命令详解 top命令重点 top常用参数 本地化部署 MDK 嵌入式开发工具 论文笔记 sublime text 考研 ubuntu20.04 ros1 Noetic 20.04 apt 安装 deep learning docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 私有化 企业网络规划 华为eNSP 玩机技巧 软件分享 软件图标 nlp 状态模式 个人博客 rclone AList webdav fnOS DIFY 物联网开发 云耀服务器 rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK HAProxy MySql Xinference SEO harmonyOS面试题 金仓数据库 2025 征文 数据库平替用金仓 软件卸载 系统清理 hexo perl 李心怡 deepseek r1 数字证书 签署证书 docker部署Python 智能电视 yum换源 zip unzip 网络爬虫 开机黑屏 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 沙盒 kernel WSL2 上安装 Ubuntu AI员工 Sealos 论文阅读 服务器正确解析请求体 IO 西门子PLC 通讯 rancher 网络搭建 神州数码 神州数码云平台 云平台 ip协议 nosql 多路转接 MAVROS 四旋翼无人机 conda配置 conda镜像源 MobaXterm dock 加速 通信工程 毕业 风扇控制软件 搭建个人相关服务器 mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 hosts 欧标 OCPP 热榜 macOS js 浏览器自动化 k8s二次开发 集群管理 rpa 达梦 DM8 CentOS Stream 计算生物学 生物信息 基因组 vu大文件秒传跨域报错cors 接口优化 搜狗输入法 中文输入法 离线部署dify 上传视频文件到服务器 uniApp本地上传视频并预览 uniapp移动端h5网页 uniapp微信小程序上传视频 uniapp app端视频上传 uniapp uview组件库 解决方案 yolov5