最新资讯

  • 【Linux】进程信号(终)

【Linux】进程信号(终)

2025-05-09 19:00:46 1 阅读

文章目录

  • 信号捕捉操作sigaction
  • pending表的清理
  • 可重入函数
  • 总结

信号捕捉操作sigaction


sigaction和signal差不多,但是比signal的功能要强大的多。
第一个参数是信号编号,表示我们要捕捉的信号编号,第二个参数和第三个参数是内置的结构体类型,我们看看:

第一个结构体成员表示捕捉信号时,捕捉到信号之后调用的方法,第二个与实时信号有关不用管,第三个成员是 sa_mask,稍后着重讲解,第四个成员默认设置为0,第五个成员这个字段通常被设置为nullptr。
sa_mask
我们写一段代码方便理解这个字段:

#include 
#include 
#include 

using namespace std;

//打印block表
void PrintBlock()
{
    sigset_t set,oset;
    sigemptyset(&set);
    sigemptyset(&oset);
    sigprocmask(SIG_BLOCK,&set,&oset);
    for(int i = 31;i > 0;i--)
    {
        if(sigismember(&oset,i))
        {
            cout<<1;
        }
        else cout<<0;
    }
}

void handler(int signo)
{
    while(true)
    {
        cout<<"get a new signal:"<<signo<<endl;
        PrintBlock();
        sleep(1);
    }    
}

int main()
{
    struct sigaction act,oact;//创建结构体对象
    act.sa_handler = handler;
    sigemptyset(&act.sa_mask);
    sigaddset(&act.sa_mask,2);
    sigaddset(&act.sa_mask,3);
    sigaddset(&act.sa_mask,4);
    sigaction(2,&act,&oact);
    while(true)
    {
        //等待信号
        pause();
    }
    return 0;
}


我们将block表打印出来可以看见,block表上屏蔽了三个信号

所以得出结论:我们自定义屏蔽信号的list可以直接放入sa_mask中。

pending表的清理

pending表是在处理信号后清除的,还是在处理信号前清除的?
代码验证:

#include 
#include 
#include 

using namespace std;
void PrintPending()
{
    sigset_t pending;
    sigpending(&pending);
    for(int i = 31;i > 0;i--)
    {
        if(sigismember(&pending,i)) cout<<1;
        else cout<<0;
    }
}

void handler(int signo)
{
    while(true)
    {
        cout<<"get a new signal:"<<signo<<endl;
        PrintPending();
        sleep(1);
    }    
}

int main()
{
    struct sigaction act,oact;//创建结构体对象
    act.sa_handler = handler;
    sigemptyset(&act.sa_mask);
    sigaction(2,&act,&oact);
    while(true)
    {
        //等待信号
        pause();
    }
    return 0;
}

我们将自定义方法死循环,如果在执行自定义方法的过程中,pending已经置零了,那么可以下结论,pending表是在信号处理之前清零的,正如下图。

现在我们再来验证一个问题,就是自定义执行方法会不会递归调用,比如当我们在信号到来时,我们调用自定义方法,然后我们将自定义执行方法改为死循环,让他一直执行自定义执行方法,然后我们再次发送信号,当信号到达时是否又要调用函数?如果我们一直发送信号是不是会一直调用自定义执行方法函数,如果会一直调用,那么存在栈溢出问题,因为一直调用,每个函数死循环栈迟早会满的,我们来验证一下这个问题:
代码:

#include 
#include 
#include 

using namespace std;

//打印block表
void PrintBlock()
{
    sigset_t set,oset;
    sigemptyset(&set);
    sigemptyset(&oset);
    sigprocmask(SIG_BLOCK,&set,&oset);
    for(int i = 31;i > 0;i--)
    {
        if(sigismember(&oset,i))
        {
            cout<<1;
        }
        else cout<<0;
    }
}

void PrintPending()
{
    sigset_t pending;
    sigpending(&pending);
    for(int i = 31;i > 0;i--)
    {
        if(sigismember(&pending,i)) cout<<1;
        else cout<<0;
    }
}

int cnt = 0;

void handler(int signo)
{
    cnt++;
    while(true)
    {
        cout<<"get a new signal:"<<signo<<" cnt:"<<cnt<<endl;
        PrintPending();
        sleep(1);
    }    
}

int main()
{
    struct sigaction act,oact;//创建结构体对象
    act.sa_handler = handler;
    sigemptyset(&act.sa_mask);
    sigaction(2,&act,&oact);
    while(true)
    {
        pause();
    }
    return 0;
}

我们定义一个全局变量,当信号触发,多次调用函数时,全局变量会++,如果全局变量没有++,则说明,操作系统是防止了自定义方法递归调用的,说明信号只能串行,不能并行,当一个信号执行完才能执行下一个信号。

操作系统时如何实现这种机制的?—操作系统在收到信号时,会屏蔽对应信号,保证信号是串行的,可以尝试打印block表观察。

可重入函数

可重入函数是指 可以被多个线程或多个信号处理程序同时调用,而不会导致未定义行为 的函数。它们不依赖共享的可变状态,也不会引起竞态条件(Race Condition)。

我们假定一个进程中有两个执行流,在main函数中有一个执行流,在信号的自定义执行方法中又是一个执行流,当我们执行主执行流时,我们定义一个链表,这个链表是全局的,主执行流头插节点1,当节点1指向头节点时,产生信号,立马跳到了第二个执行流,执行自定义方法,但是自定义方法也是头插节点,node2指向头节点,最后head指向node2,自定义方法执行完了之后,回到主执行流之后,head会改变指向,指向node1,执行完流程之后,我们会发现node2没有释放,所以我们可以得出一个结论就是当有信号介入的时候可能会出现内存泄露,所以上面举的例子叫做不可重入函数,当执行可重入函数的时候是不会出问题的,我们以前见到的百分之90都是不可重入函数,只有很少一部分是可重入函数。
常见的可重入函数
以下函数在多线程或信号处理中是安全的,它们不依赖全局状态,也不会修改共享资源。

函数说明
strlen()计算字符串长度,仅读取内存,不修改数据
memcpy()复制内存区域,使用局部变量,不依赖全局状态
strcpy()复制字符串,但调用者需保证目标缓冲区足够大
gettimeofday()获取当前时间,数据存放在用户提供的结构体中
memcmp()比较两个内存块的内容,仅进行只读操作
strchr()查找字符串中的字符,仅进行只读操作
strncpy()复制字符串,使用固定长度,避免缓冲区溢出
isdigit()判断字符是否为数字,仅查询静态数据,不修改全局状态

常见的不可重入函数
这些函数内部使用了全局或静态变量,或者依赖非线程安全的操作,因此在多线程环境下可能导致竞态条件。

函数问题
malloc() / free()使用全局堆管理结构,多个线程同时调用可能导致数据竞争
printf() / scanf()使用全局缓冲区,多个线程同时输出可能导致数据混乱
ctime()返回指向静态缓冲区的指针,多线程调用会导致数据覆盖
rand()使用全局种子 seed,多个线程调用会影响随机数结果
strtok()使用静态变量保存状态,导致多线程同时解析字符串时出现问题
asctime()返回静态缓冲区中的字符串,多次调用会覆盖上次结果
gethostbyname()使用静态数据存储 DNS 解析结果,导致数据竞争
setenv() / getenv()修改或访问全局环境变量,可能导致竞态条件

总结

本篇文章介绍了 sigaction 进行信号捕捉的基本用法,详细分析了 pending 表的清理机制,并探讨了可重入函数的特性及其在多线程和信号处理中的重要性。理解这些概念有助于编写更健壮的 Linux 应用程序,避免由于信号处理或多线程环境中的竞态条件导致的不确定行为。在实际开发中,合理使用 sigaction 及线程安全的函数,可以有效提升程序的稳定性和可靠性。

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

搜索文章

Tags

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