音乐极客指南:Melody高音质私有云音乐平台本地部署方案
文章目录
- 前言
- 1. 添加镜像源
- 2. 本地部署Melody
- 3. 本地访问与使用演示
- 4. 安装内网穿透
- 5. 配置Melody公网地址
- 6. 配置固定公网地址
前言
嘿,各位音乐爱好者们!今天我要带大家玩个大招——在香橙派Zero3上搭建你的专属在线音乐平台,还能通过cpolar内网穿透实现远程访问。听起来是不是很酷?别急,咱们一步步来,保证让你也能轻松搞定自己的私人音乐库!
在这个音乐如空气般无处不在的时代,每个人的手机里都藏着一个音乐宝藏,但管理这些歌曲并随时随地播放却成了难题。想听首歌还要忍受广告和高昂的会员费?不干了!如果你是个动手能力强的技术大神或者对未来科技充满好奇的新手小白,自己打造一套私人在线音乐平台绝对是你不容错过的DIY项目!
Melody是一款开源免费的个人音乐平台,不仅能播放各大网站上的歌曲,还能轻松管理本地或云盘中的音乐资源。而香橙派Zero3则是一台性能稳定、功耗极低的小主机,非常适合长时间运行各种服务。想象一下,把它放在家里像路由器一样24小时在线,无论你身处何方,都能随时享受你的私人音乐库!准备好了吗?咱们马上开始吧!
1. 添加镜像源
我这里演示的环境是已经刷好CasaOS的香橙派Zero3小主机。
不知道如何操作的可以看下这篇教程:[香橙派Orange Pi zero3如何刷CasaOS轻NAS系统](香橙派Orange Pi zero3刷CasaOS轻NAS系统与远程浏览本地文档或影视资源_哔哩哔哩_bilibili)
首先,我们需要在浏览器中输入香橙派ip地址(在路由器中查看名为orangepizero3的就是),进入CasaOS管理界面。
然后进入终端,使用root账号密码登录。
进入终端后执行下方命令:
nano /etc/docker/daemon.json
在编辑器中输入新的镜像源地址:
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live"
]
}
然后按Crtl+X键保存这个镜像源,退出编辑器回到终端后执行下方命令重新启动docker服务:
systemctl restart docker
2. 本地部署Melody
重启操作完成之后,即可以在终端中先创建一个目录,例如: ~/melody-profile
mkdir melody-profile
然后即可执行下方命令启动Melody容器了:
docker run -d -p 5566:5566 -v ~/melody-profile:/app/backend/.profile foamzou/melody:latest
启动完成后,关闭终端。
3. 本地访问与使用演示
在浏览器中输入:http://香橙派IP+端口号5566 即可打开Melody网页界面:
可以看到需要填写melody key后才能开始使用,默认的 melody key 为: melody
,若你的服务部署在私有网络,则可以不用修改(网易云账号、密码可以在 web 页面设置)。
若需要修改或添加新账号,可编辑/app/backend/.profile/accounts.json
文件。
- 该 JSON 中的 key 是 Melody Key,是你在网页访问该服务的唯一凭证
- 网易云账号信息:account 和 password 可以后续在网页修改,修改完成后重启 Docker容器或在网页点点击
更新网易云账号信息
即可。
我这里选择了扫码登录
通过歌名搜索,可以在多个平台进行搜索并提供结果。
搜索到歌曲后,可以选择播放,上传到云盘,下载到服务器,在源站打开等操作。点击播放条后的三个点,也可以直接将歌曲下载到本地电脑,和选择播放速度。
点击歌单可以看到登录后的歌单
点击 解锁全部(实验性功能)
后,后台会自动匹配每首歌曲,并把歌曲上传到云盘。当某首歌自动解锁失败后,你还可以手动点击搜索按钮,找到符合的歌曲后,手动点击上传
按钮。
Melody在手机端的浏览器中适配效果也不错,同样输入香橙派IP+端口5566即可访问:
如需了解更多信息,可以访问其作者的官方网站或查阅相关的技术文档。
Docker镜像
https://hub.docker.com/r/foamzou/melody
GitHub地址
https://github.com/foamzou/melody
4. 安装内网穿透
此时,我们已经成功在本地的CasaOS香橙派Zero3主机中部署了Melody,并实现了多设备在线听歌,但目前我们仅能在本地局域网中使用Melody,有一定局限性。如果想在外出时也能远程访问家中部署的Melody来随时随地听喜欢的音乐该怎么办呢?
很简单,只要在香橙派中安装一个cpolar内网穿透工具就能轻松实现远程访问内网主机中部署的服务了,接下来介绍一下如何安装cpolar内网穿透。
首先,点击左上角进入终端:
输入root账号密码登录:(不知道如何获取密码可以看上文中提到的刷机教程)
然后在终端中执行下方一行命令,即可安装cpolar内网穿透工具:
curl -fsSL https://get.cpolar.sh | sudo sh
安装完毕后可以执行下方命令查看服务状态:
systemctl status cpolar
如下图所示即为cpolar内网穿透服务正在正常运行。
5. 配置Melody公网地址
然后我们使用CasaOS香橙派的IP地址加上9200,打开一个新的浏览器来登录cpolar管理界面 :
PS:香橙派的IP地址可以在路由器中查看,名为orangepizero3的就是。
如果没有账号可以点击免费注册访问cpolar官网注册账号:https://www.cpolar.com
输入账号密码登录cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道:
隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:melody
协议:http
本地地址:香橙派主机IP+5566端口
域名类型:随机域名
地区:选择China Top
点击创建
隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网地址,然后复制地址
打开浏览器,使用刚刚获取的公网地址进行连接访问:
重新输入melody即可正常使用:
小结
为了方便演示,我们在上边的操作过程中使用cpolar生成的公网地址是随机生成的。这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址是随机生成,不好记,而且这个地址在24小时内会发生随机变化,更适合于临时测试使用。
如果有长期远程访问本地casaos香橙派中的Melody在线音乐平台,或者远程访问其他本地服务的需求,又不想每天重新配置公网地址,还想地址好看又好记,那我推荐大家选择配置固定的公网地址来远程访问。
6. 配置固定公网地址
登录cpolar官网,点击左侧的预留,选择保留二级子域名,地区选择China VIP,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称,这里我填写的是 melody001
,大家也可以自定义喜欢的名称。
保留成功后复制保留成功的二级子域名的名称: melody001
,返回登录Cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 melody
,点击右侧的编辑:
修改隧道信息,将保留成功的二级子域名配置到隧道中
- 域名类型:选择二级子域名
- Sub Domain:填写保留成功的二级子域名:melody001
- 地区:选择China VIP
点击更新
(注意,点击一次更新即可,不需要重复提交)
更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,由随机地址名称变成了两个固定的二级子域名(固定公网地址):
使用任意一个固定公网地址在浏览器访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以远程访问本地局域网内的casaos香橙派主机端中的Melody在线音乐平台了!
通过今天的分享,相信你已经掌握了在香橙派Zero3上搭建个人在线音乐平台的秘诀。不论是追求极致音质体验还是提升技术功底,这个DIY项目都能让你满载而归。如果你还有任何疑问或者遇到问题,欢迎随时留言交流,大家一起头脑风暴解决!希望你能成功打造出属于自己的私人音乐库,并在这个过程中找到无穷的乐趣和满满的成就感。加油吧,音乐界的DIY大神们!
相关文章:
音乐极客指南:Melody高音质私有云音乐平台本地部署方案
文章目录 前言1. 添加镜像源2. 本地部署Melody3. 本地访问与使用演示4. 安装内网穿透5. 配置Melody公网地址6. 配置固定公网地址 前言 嘿,各位音乐爱好者们!今天我要带大家玩个大招——在香橙派Zero3上搭建你的专属在线音乐平台,还能通过cpo…...
Microi吾码界面设计引擎之基础组件用法大全【内置组件篇·中】
🎀🎀🎀 microi-pageengine 界面引擎系列 🎀🎀🎀 一、Microi吾码:一款高效、灵活的低代码开发开源框架【低代码框架】 二、Vue3项目快速集成界面引擎 三、Vue3 界面设计插件 microi-pageengine …...
# WebSocket 与 Socket.IO 对比与优化
核心概念对比 WebSocket 协议性质:HTML5 提供的全双工通信协议 (RFC 6455)连接方式:基于 TCP 的低层协议通信模式:持久化连接,服务端可主动推送协议升级:通过 HTTP 101 状态码切换协议 Socket.IO 协议性质…...
vue3中,route4,获取当前页面路由的问题
首先应用场景如下: 在main.js里面,引入的是路由的配置文件,如下: import {router} from /router; app.use(router); 路由配置文件router.js如下: import { createRouter, createWebHistory } from vue-router; imp…...
python将整个txt文件写入excel的一个单元格?
要将整个txt文件写入Excel的一个单元格,可以使用Python的openpyxl库来实现。以下是一个简单的示例代码: from openpyxl import Workbook# 读取txt文件内容 with open(file.txt, r) as file:txt_content file.read()# 创建一个新的Excel工作簿 wb Work…...
日志2333
Pss-9 这一关考察的是时间盲注 先练习几个常见命令语句: select sleep(5);--延迟5s输出结果 if (1>0,ture,false);--输出‘ture’ /if (1<0,ture,false);--输出‘false’ select ascii()/select ord()返回字…...
用Deepseek写扫雷uniapp小游戏
扫雷作为Windows系统自带的经典小游戏,承载了许多人的童年回忆。本文将详细介绍如何使用Uniapp框架从零开始实现一个完整的扫雷游戏,包含核心算法、交互设计和状态管理。无论你是Uniapp初学者还是有一定经验的开发者,都能从本文中获得启发。 …...
C++中的异常和智能指针
一、C中的异常 1.1C语言中关于错误的处理(回顾) 1.1.1处理一:文件中的错误码,错误信息 C语言中,文件打开成功则返回地址,不成功返回0 FILE* foutfopen("Test.txt","r"); cout<&…...
Selenium 简单入门操作示例
最简单的 Selenium 示例(Python版) 下面是一个完整的、最简单的 Selenium 操作示例,带你快速上手: from selenium import webdriver from selenium.webdriver.common.by import By import time# 1. 启动浏览器(这里使…...
6.1 模拟专题:LeetCode 1576. 替换所有的问号
1. 题目链接 LeetCode 1576. 替换所有的问号 2. 题目描述 给定一个仅包含小写字母和问号 ? 的字符串 s,要求将所有 ? 替换为任意小写字母,使得替换后的字符串中 没有相邻的两个字符相同。 示例: 输入:s "?zs" →…...
前端知识点---用正则表达式判断邮箱(javascript)
// 全面的正则(兼容大多数情况) const emailRegex /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/;// 或直接使用浏览器内置验证 <input type"email" required>/:正则表达式的起始和结束标志。 ^:匹配字符串的…...
深度剖析 Spring 源码 性能优化:核心原理与最佳实践
深度剖析 Spring 源码 & 性能优化:核心原理与最佳实践 🚀 Spring 框架 作为 Java 生态的核心技术,广泛应用于企业级开发。但很多开发者只会“用”Spring,而不深入其内部原理,导致无法高效排查问题 & 进行性能优…...
Axure RP9教程 :轮播图(动态面板) | 头部锁定
文章目录 引言I 轮播图操作步骤在画布中添加一个动态面板设置面板状态II 头部锁定将头部区域选中,右键组合或用Ctrl+G快捷键;将组合的头部区域,右键创建动态面板;引言 动态面板的功能十分强大,比如:拥有独立的内部坐标系,有多个状态; Banner的案例中会用到动态面板多个…...
rabbitmq承接MES客户端服务器
文章目录 背景整体架构概述方案详细步骤1. 数据库选型与搭建2. 设备端数据上传至数据库3. 搭建 RabbitMQ 服务器4. 数据同步模块(数据库到 RabbitMQ)5. MES 服务器从 RabbitMQ 接收数据6. 指令接收模块(RabbitMQ 到设备端) 7. MES…...
重学vue3(三):vue3基本语法及使用
组合式 API是vue3 的核心特性,替代 Vue2 的选项式 API,强调逻辑复用和代码组织。基本语法如下: <script setup> import { ref, reactive, computed, onMounted } from vue;// 1. 响应式数据 const count ref(0); // 基本类…...
算法 | 麻雀搜索算法原理,公式,改进算法综述,应用场景及matlab完整代码
一、麻雀搜索算法(SSA)原理 1. 算法基础 麻雀搜索算法(Sparrow Search Algorithm, SSA)是2020年提出的一种群体智能优化算法,灵感来源于麻雀群体的觅食与反捕食行为。算法将麻雀分为三类角色:发现者(Producer):适应度最高,负责探索全局最优区域;加入者(Follower)…...
0322-数据库与前后端的连接、数据库表的增删改查
前端 <!DOCTYPE html> <html> <head> <meta charset"UTF-8"> <title>Insert title here</title> <script srcjs/jquery-3.7.1.min.js></script> <script> //jquaryajax发起请求 //传参形式不同 post用data{}…...
详细介绍Qt中用于断言的宏 Q_ASSERT
Q_ASSERT 是 Qt 框架中用于调试的核心宏之一,其作用类似于标准 C/C 的 assert,但针对 Qt 的特性进行了优化。它用于在开发阶段验证程序的逻辑正确性,帮助开发者快速定位潜在的错误。 1.基本用法 Q_ASSERT(condition);功能:在调试…...
基于Python的自然语言处理系列(60):使用 LangChain 构建 Multi-Vector Retriever 进行文档检索
在 NLP 和 AI 领域,基于嵌入(Embeddings)进行文档检索已成为一种高效的解决方案。本文介绍如何使用 LangChain 构建 Multi-Vector Retriever,实现对长文档的分块索引和高效检索。 1. 环境准备 首先,我们需要安装相关…...
Dify 部署指南-离线版
Docker 部署 1、 访问 Docker 官网 (https://www.docker.com/) 获取安装包。 2、 上传 Docker 安装包 3、 进入解压目录,执行解压命令 tar xzvf docker-28、0.2、tgz4、 将解压文件中的 Docker 相关文件移动到 /usr/bin/ 目录 sudo cp docker/* /usr/bin/5、 创建…...
解决 Element UI 嵌套弹窗的状态管理问题!!!
解决 Element UI 嵌套弹窗的状态管理问题 🔧 问题描述 ❓ 在使用 Element UI 开发一个多层嵌套弹窗功能时,遇到了以下问题: 弹窗只能打开一次,第二次点击无法打开 🚫收到 Vue 警告:避免直接修改 prop 值…...
基于STM32单片机的智能手环/音乐播放/语音识别
基于STM32单片机的智能手环/音乐播放/语音识别 持续更新,欢迎关注!!! ** 基于STM32单片机的智能手环/音乐播放/语音识别 ** 21世纪,社会高速发展,生活物质越来越丰富,随着科技的进步,智能化成为了人们关注的焦点&am…...
NFC 智能门锁全栈解决方案:移动端、服务器、Web 管理平台
目录 一、系统整体架构 二、移动端 APP 开发 2.1 开发环境与基础准备 2.2 主要功能模块 2.3 示例代码(Android/Kotlin 简化示例) 三、后台服务开发 3.1 环境准备 3.2 主要功能 3.3 示例代码(Node.js Express 简化示例) …...
使用 Python 开发 MCP Server 及 Inspector 工具详解
使用 Python 开发 MCP Server 及 Inspector 工具详解 前言 模型上下文协议 (Model Context Protocol, MCP) 是一种新兴的协议,旨在让大型语言模型 (LLM) 更容易地与外部工具和服务集成。本文将介绍如何使用 Python 开发一个 MCP Server,并详细讲解如何使…...
论坛系统测试报告
一、项目背景 为论坛系统项目设计并进行自动化测试。论坛系统由六个页面构成:用户登录页、用户注册页、个人中心页面、我的帖子页面、帖子编辑页、帖子列表页以及帖子详情页。 通过使用selenium工具来定位到web中的元素,对获取到的元素进行自动化测试等操…...
Android一个APP里面最少有几个线程
Android应用启动时,默认会创建一个进程,该进程中最少包含5个系统自动创建的线程,具体如下: Main线程(主线程/UI线程) 负责处理用户交互、UI更新等核心操作,所有与界面相关的逻辑必须在此线程执行。若在此线程执行耗时操作(如网络请求),会导致界面卡顿甚至触发ANR(应…...
DML 数据操纵语言学习笔记
一、DML 核心概念体系 1.1 语言定位与边界 DML(Data Manipulation Language)作为 SQL 三大核心语言之一,专注于数据行级操作,区别于 DDL(结构定义)和 DCL(权限控制)。其核心指令包…...
7-Zip 功能介绍
7-Zip 是一款开源、高效的文件压缩与解压缩工具,支持多种格式,以高压缩率和灵活性著称。以下是其核心功能: 多格式支持 压缩 / 解压:支持 7z(默认格式,压缩率极高)、ZIP、RAR、GZIP、BZIP2、TAR…...
《基于python游戏设计与实现》开题报告
个人主页:@大数据蟒行探索者 一、研究背景、目的及意义 (一)研究背景 游戏的普及与成功:随着智能手机的普及和网络技术的发展,手机游戏产业逐渐成熟,成为娱乐文化产业的重要组成部分。《开心消消乐》作为一款休闲类游戏,自上线以来凭借其简单易上手的玩法和丰富的…...
鸿蒙学习笔记(3)-像素单位、this指向问题、RelativeContainer布局、@Style装饰器和@Extend装饰器
一、像素单位 物理像素:用px表示。 逻辑像素:在布局的时候,底层针对物理像素和屏幕尺寸关系进行转化的中间层。 分辨率:代表在屏幕上到底布局了多少了像素点(发光点) 官方同时也提供了相关单位,在开发中…...
Selenium之简介
Selenium简介 首先,让我们看看官网是怎么定义的 Selenium是一个支持web浏览器自动化的一系列工具和库的综合项目,提供了扩展来模拟用户和浏览器的交互,用于扩展浏览器分配的分发服务器;用于W3C WebDriver规范的基础架构 其实&a…...
使用Ollama(自定义安装位置)与RagFlow构建本地知识库
目录 1. 为什么不直接使用网页版DeepSeek?2. 如何实现网页版DeepSeek不能实现的需求?3. 目标效果预览4. 为什么要使用RAG技术?RAG和模型微调的区别?5. 什么是Embedding?为什么需要“Embedding模型”?6. 本地部署全流程6.1 下载ollama,通过olama将DeepSeek模型…...
基于ssm的医院预约挂号系统
一、系统架构 前端:jsp | bootstrap | jquery | css | ajax 后端:spring | springmvc | mybatis 环境:jdk1.8 | mysql | maven | tomcat 二、代码及数据 三、功能介绍 01. 注册 02. 登录 03. 首页 04. 医院挂号 05. …...
如何通过less在vue2中达到切换皮肤的目的
先装less npm install less less-loader --save-dev 然后将该 loader 添加到 webpack 的配置中去,例如: webpack.config.js module.exports {module: {rules: [{test: /\.less$/i,use: [// compiles Less to CSSstyle-loader,css-loader,less-loade…...
DeepSeek概述
一、DeepSeek概述 1.1 DeepSeek是什么 DeepSeek是一家专注 通用人工智能(AGI,Artificial General Intelligence)的中国科技公司,主攻大数据研发与应用。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费商用…...
生成模型速通(Diffusion,VAE,GAN)
基本概念 参考视频https://www.bilibili.com/video/BV1re4y1m7gb/?spm_id_from333.337.search-card.all.click&vd_sourcef04f16dd6fd058b8328c67a3e064abd5 生成模型其实是主要是依赖概率分布,对输入特征的概率密度函数建模 隐空间(latent space)…...
linux/android 如何获取当前系统启动时长
uptime 指令获取 trinket:/ # uptime12:03:31 up 3 min, 0 users, load average: 1.02, 0.68, 0.29...
Elasticsearch客户端工具初探--kibana
1 Kibana简介 Kibana是Elastic Stack(ELK)中的可视化工具,用于对Elasticsearch中存储的数据进行搜索、分析和可视化展示。它提供了直观的Web界面,支持日志分析、业务监控、数据探索等功能,广泛应用于运维监控、安全分析…...
深克隆和浅克隆(建造者模式,内含简版)
让我们来看一个例子: 设计一个客户类Customer,其中客户地址存储在地址类Address中,用浅克隆和深克隆分别实现Customer对象的复制并比较这两种克隆方式的异同。 代码实现 Customer类和Address类都是实现的Java 内置的 java.lang.Cloneable …...
吴恩达机器学习笔记复盘(十二)逻辑回归的梯度下降和拟合问题
梯度下降算法推导过程 一、逻辑回归模型基础 逻辑回归用于二分类问题,其假设函数为sigmoid函数: 其中,是模型参数向量,是特征向量。输出表示样本属于正类的概率。 二、损失函数 逻辑回归的损失函数采用 对数损失(交…...
OSPF五种报文分析(仅部分比较重要的)
OSPF五种报文分别是: hello报文,DBD数据库描述报文,LSR链路状态请求报文,LSU链路状态更新报文,LSACK链路状态确认包 以下是这五种报文的详细解读: 1. Hello报文 作用: 用于邻居的发现、建立和…...
Ubuntu 22.04 二进制安装单节点 MySQL
Ubuntu 22.04 二进制安装 MySQL LTS(长期支持版)完整教程 MySQL LTS 版本选择: 目前 MySQL 8.4.4 是长期支持(LTS)版本,持续更新并保持稳定。 下载版本: 你也可以在 MySQL 官方网站确认最新稳…...
python处理音频相关的库
1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数,生成wav文件 def record(file_name):try:os.close(file_…...
python+ffmpeg给音频添加背景音乐
说明: 我希望用python,将name.mp3这段录音文件,添加背景音乐,bg.mp3,然后生成新的文件 step1: 添加依赖 pip install pydubstep2:下载ffmpeg 1.打开windows powershell ,管理员运行 2.winget install ff…...
《TypeScript 面试八股:高频考点与核心知识点详解》
“你好啊!能把那天没唱的歌再唱给我听吗? ” 前言 因为主包还是主要学习js,ts浅浅的学习了一下,在简历中我也只会写了解,所以我写一些比较基础的八股,如果是想要更深入的八股的话还是建议找别人的。 Ts基…...
鸡生蛋还是蛋生鸡? 基于python的CCM因果关系计算
文章目录 前言一、安装二、代码1.全部代码2.结果展示总结前言 因果推断在科学研究中起着重要的作用,尤其是在复杂系统中,例如生态学、气候学、经济学等领域。在这些领域中,了解变量之间的因果关系可以帮助我们更好地理解系统的动态行为和相互作用。传统的相关性分析并不足以…...
PyBluez2 的详细介绍、安装指南、使用方法及配置说明
PyBluez2:Python 蓝牙开发的核心库 一、PyBluez2 简介 PyBluez2 是 Python 的开源蓝牙编程库,支持蓝牙 2.0、BLE(低功耗蓝牙)和传统蓝牙协议栈的开发。它提供了对蓝牙硬件适配器的底层控制,适用于设备发现、配对、数…...
鸿蒙HarmonyOS NEXT之无感监听
鸿蒙中存在一些无感监听,这些监听经过系统API封装使用很简单,但是对实际业务开发中有很重要,例如埋点业务、数据统计、行为上报、切面拦截等。 Navigation的页面切换 在鸿蒙中Navigation被用来作为路由栈进行页面跳转,如果你想知…...
质检LIMS系统在食品生产加工企业的应用 如何保证食品生产企业的安全
在食品生产加工领域,质量安全是贯穿全产业链的生命线。随着《食品安全法》对全过程追溯要求的深化,传统实验室管理模式已难以满足高效、精准的质量管控需求。质检实验室信息管理系统(LIMS)作为数字化升级的核心工具,正…...
linux中如何获取其他进程的退出状态
进程的退出状态至关重要,用wait系列函数,父进程可以捕捉到子进程的退出状态,若给定任意进程,其父进程已经确定,无法改变,自己如何获取到其退出状态呢。 可以用ptrace系统api attach到相应的进程,…...