Avatar
🎯

Organizations

  • 这篇博客主要学习了 WebRTC 中的任务队列的实现方式和使用方式。
    WebRTC Created Tue, 19 Mar 2024 19:32:57 +0800
  • 这篇博客主要学习了虚拟地址空间的概念以及相关的用法。
    OS Created Wed, 07 Feb 2024 15:56:52 +0800
  • 这篇博客主要学习了 ABI 这一概念以及其相关的用法。
    ABI C++ Created Wed, 07 Feb 2024 12:51:01 +0800
  • 问题背景 前两天室友问我,怎么 kill 掉在 Shell 脚本中调用的 Python 进程,我第一时间想到的是:打开 htop,把它调整成树形布局,然后搜索 Shell 脚本,选中之后把它 kill 掉,Python 进程应该也会被 kill 掉。 但是结果是 Python 进程并没有变红,而是成为了 init 进程的子进程。 孤儿进程是怎么产生的 大二学 OS 学到父进程和子进程的概念的时候,还是只是以为父进程和子进程之间应该存在牢固的控制关系,父进程退出时子进程也应该默认退出。 但是 OS 的实际行为不是这样,子进程和父进程只是说明了二者之间存在谁创建谁的关系,并不存在牢固的控制关系(而是类似于现实中的父子关系)。 父进程结束时子进程并没有结束,子进程成为孤儿进程,会被 init 进程收养 父进程崩溃或异常终止 并发和竞争条件导致父子进程的结束顺序错误 如何避免孤儿进程的产生 其实就是需要在程序设计时,考虑到上述的这几种可能导致孤儿进程产生的原因,然后对异常情况进行注册和处理。对于开始时的这个引入问题而言,答案可以写成以下两个脚本: #!/bin/bash # 定义一个函数来处理信号 cleanup() { echo "捕捉到终止信号,正在终止 Python 进程..." kill $PYTHON_PID exit } # 在接收到 SIGINT || SIGTERM || SIGKILL 时执行 cleanup 函数 trap 'cleanup' SIGINT SIGTERM # 启动 Python 脚本并获取其进程 ID python example_python.py & PYTHON_PID=$!
    OS Shell Python Created Mon, 29 Jan 2024 10:31:56 +0800
  • 这篇博客用来记录平时用到的一些 Git 操作,用到之后会不定时更新。 clone 相关 克隆指定 branch : git clone --branch <branch-name> <remote-repo-url> 递归克隆(包括 submodule ):git clone --recursive 已经 clone 完的仓库:git submodule update --init --recursive checkout 相关 切换分支:git checkout <branch-name> / git switch <branch-name> 新建分支:git checkout -b <branch-name> / git switch -c <branch-name> 切换到一个 tag :git fetch --all --tags --prune -> git tag -> 使用 / 快速搜索 -> git checkout tags/<tag-name> -b <branch-name> commit 相关 undo 本地改动(还未 commit):git restore <file-path>
    git Created Tue, 23 Jan 2024 09:50:29 +0800
  • 这篇博客主要总结了与 h264 编码相关的知识。
    Multimedia Created Tue, 23 Jan 2024 01:05:20 +0800