Linux - 深入理解/proc虚拟文件系统:从基础到高级

news2024/12/24 8:45:31

文章目录

  • Linux /proc虚拟文件系统
  • /proc/self
    • 使用 /proc/self 的优势
    • /proc/self 的使用案例
      • 案例1:获取当前进程的状态信息
      • 案例2:获取当前进程的命令行参数
      • 案例3:获取当前进程的内存映射
      • 案例4:获取当前进程的文件描述符
  • /proc中进程管理相关的文件和目录
  • /proc中内存管理相关的文件和目录
  • 基础使用示例
    • 1. 查看系统总内存使用情况
    • 2. 查看某个进程(假设PID为5069)的命令行参数
    • 3. 查看某个进程打开的文件
    • 4. 查看某个进程的内存映射
  • /proc文件系统的高级使用技巧和最佳实践
    • 1. 动态调整内核参数
    • 2. 实时监控系统性能
    • 3. 调试和优化进程
    • 4. 检查文件句柄使用情况
    • 5. 监控网络连接和套接字
    • 最佳实践建议
  • /proc文件系统的具体使用案例
    • 案例1:实时监控系统的CPU使用情况
    • 案例2:监控某个进程的内存使用情况
    • 案例3:检测系统打开文件句柄的数量
    • 案例4:监控网络连接状态
    • 案例5:监控和调优虚拟内存使用
    • 案例6:分析进程的详细内存映射
    • 案例7:实时监控系统的I/O活动
    • 案例8:检查系统中断处理情况
  • 综合案例

在这里插入图片描述


Linux /proc虚拟文件系统

Linux /proc虚拟文件系统(procfs)是一个伪文件系统,它为内核数据提供了一个接口。与传统文件系统不同,/proc中的文件和目录并不存在于磁盘上,而是实时生成的。它主要用于获取系统和进程的信息,调试和管理系统。

procfs包含大量关于硬件、内核、运行进程等方面的动态信息,使用户和程序能够以文件操作的方式访问系统状态。


/proc/self

在Linux操作系统中,/proc文件系统是一个虚拟文件系统,提供了一种查看系统和进程信息的机制。每个进程在/proc目录下都有一个对应的子目录,通过进程的PID(进程ID)来命名,例如/proc/1234表示PID为1234的进程。

然而,为了简化进程自身信息的访问,Linux提供了一个特殊的目录:/proc/self。这个目录总是指向访问它的进程自身的目录。因此,无论哪个进程访问/proc/self,它看到的都是与/proc/[PID]相同的信息,而无需显式地获取和指定自己的PID。

使用 /proc/self 的优势

  1. 简化访问:进程无需获取自身的PID来访问自己的信息,直接通过/proc/self即可访问。
  2. 代码简洁:代码中直接使用/proc/self,避免了获取PID的步骤,使代码更简洁和易读。
  3. 通用性:不同的进程访问/proc/self时,获取的是各自的进程信息,这种特性使得/proc/self在编写通用工具和脚本时非常有用。

/proc/self 的使用案例

案例1:获取当前进程的状态信息

#!/bin/bash
# 读取当前进程的状态信息

cat /proc/self/status

这个脚本直接读取/proc/self/status文件,输出当前进程的状态信息,包括进程状态、内存使用情况、线程数等。

案例2:获取当前进程的命令行参数

#!/bin/bash
# 读取当前进程的命令行参数

cat /proc/self/cmdline

这个脚本读取/proc/self/cmdline文件,输出当前进程的命令行参数。cmdline文件包含了启动进程时传递的所有参数。

案例3:获取当前进程的内存映射

#!/bin/bash
# 读取当前进程的内存映射信息

cat /proc/self/maps

这个脚本读取/proc/self/maps文件,输出当前进程的内存映射信息,包括进程的各个内存段的起始地址、权限和映射的文件。

案例4:获取当前进程的文件描述符

#!/bin/bash
# 列出当前进程打开的所有文件描述符

ls -l /proc/self/fd

这个脚本列出/proc/self/fd目录下的所有文件描述符。每个文件描述符都是一个符号链接,指向该描述符所引用的文件。

/proc/self目录提供了一种方便的方式,允许进程直接访问自身的信息,而不必每次都显式获取自己的PID。这种特性极大地简化了获取进程信息的操作,使得编写涉及进程信息获取的脚本和工具变得更加简单和高效。

通过/proc/self,可以轻松地访问进程的状态、命令行参数、内存映射、文件描述符等信息,帮助你进行系统监控、调试和优化等任务。在实际应用中,利用/proc/self能够使你的代码更加简洁和具有通用性。


/proc中进程管理相关的文件和目录

在这里插入图片描述

在/proc目录中,每个运行的进程都有一个以其PID(进程ID)命名的子目录。这些子目录包含了进程的详细信息,以下是一些关键文件和它们的用途:

  • /proc/[PID]/cmdline:显示启动该进程的命令行。
  • /proc/[PID]/cwd:指向进程的当前工作目录。
  • /proc/[PID]/exe:指向正在执行的二进制文件。
  • /proc/[PID]/fd/:包含该进程打开的所有文件描述符。
  • /proc/[PID]/stat:包含关于进程状态的详细信息,如进程状态、CPU时间等。
  • /proc/[PID]/status:提供进程状态的简明信息,包括内存使用、用户ID、组ID等。
  • /proc/[PID]/environ: 获取当前进程的环境变量信息

这些文件和目录可以用于监控和调试进程。

例如,

  • 可以通过查看/proc/[PID]/cmdline来确定某个进程是如何启动的,
  • 通过/proc/[PID]/fd/来查看该进程打开了哪些文件

/proc中内存管理相关的文件和目录

/proc目录中有一些文件提供了关于系统内存使用情况的详细信息,这些信息对于系统管理员和开发者来说非常重要:

  • /proc/meminfo:显示系统的内存使用情况,包括总内存、空闲内存、缓冲区内存等。
  • /proc/swaps:显示交换分区的使用情况。
  • /proc/slabinfo:显示内核SLAB分配器的状态。
  • /proc/[PID]/maps:显示该进程的内存映射,包括加载的共享库、堆、栈等。
  • /proc/[PID]/smaps:提供比maps更详细的内存映射信息,包括每个映射的内存使用情况。

这些文件可以帮助识别内存泄漏、优化内存使用和理解系统的内存分配行为。例如,通过查看/proc/meminfo,可以快速了解系统内存的总体使用情况,而/proc/[PID]/maps/proc/[PID]/smaps则可以用于分析单个进程的内存使用情况。


基础使用示例

下面是一些使用/proc文件系统进行监控和管理的实际示例:

1. 查看系统总内存使用情况

cat /proc/meminfo

在这里插入图片描述

2. 查看某个进程(假设PID为5069)的命令行参数

cat /proc/5069/cmdline

3. 查看某个进程打开的文件

ls -l /proc/5069/fd/

4. 查看某个进程的内存映射

cat /proc/5069/maps

在这里插入图片描述


/proc文件系统的高级使用技巧和最佳实践

Linux /proc文件系统不仅仅提供基本的系统和进程信息,还可以通过一些高级使用技巧进行更深入的系统监控、调试和优化。掌握这些技巧能帮助用户更高效地管理系统,及时发现和解决潜在问题。

1. 动态调整内核参数

/proc/sys目录包含许多内核参数,这些参数可以在系统运行时动态调整,从而无需重启系统。比如,可以调整TCP连接的参数、虚拟内存管理参数等。

  • 调整TCP Keepalive时间

    echo 600 > /proc/sys/net/ipv4/tcp_keepalive_time
    
  • 调整虚拟内存的交换分区使用策略

    echo 10 > /proc/sys/vm/swappiness
    

2. 实时监控系统性能

通过读取/proc/stat和/proc/loadavg等文件,可以获取CPU使用情况和系统负载信息,这对于性能监控和容量规划非常有用。

  • 查看CPU使用情况

    cat /proc/stat
    
  • 查看系统负载

    cat /proc/loadavg
    

3. 调试和优化进程

使用/proc/[PID]/中的文件,可以获取关于特定进程的详细信息,从而帮助调试和优化进程。

  • 查看进程的环境变量

    cat /proc/1234/environ | tr '\0' '\n'
    
  • 查看进程的内存页错误和内存分配情况

    cat /proc/1234/statm
    

4. 检查文件句柄使用情况

/proc/sys/fs/file-nr文件可以用于监控系统中文件句柄的使用情况,以防止文件句柄耗尽的问题。

  • 查看文件句柄使用情况
    cat /proc/sys/fs/file-nr
    

5. 监控网络连接和套接字

/proc/net目录包含关于网络连接和套接字的信息,可以用于网络监控和调试。

  • 查看当前TCP连接

    cat /proc/net/tcp
    
  • 查看网络接口统计信息

    cat /proc/net/dev
    

最佳实践建议

  1. 自动化监控和报警:使用脚本或监控工具(如Nagios、Prometheus等)自动化读取/proc中的关键文件,并根据设定的阈值触发报警。

  2. 限制权限:确保只有授权用户和进程可以访问/proc中的敏感信息,避免潜在的安全问题。

  3. 定期检查和调整:定期检查/proc中的内核参数和系统状态,根据实际情况调整配置,确保系统运行在最佳状态。

  4. 结合其他工具使用:将/proc中的信息与其他系统监控和日志分析工具结合使用,提供全面的系统监控解决方案。


/proc文件系统的具体使用案例

通过具体使用案例,可以更直观地展示如何利用/proc文件系统进行系统监控、调试和优化。

以下案例将涵盖常见的系统监控任务,包括CPU和内存使用监控、进程调试、网络连接监控等。

案例1:实时监控系统的CPU使用情况

监控系统的CPU使用情况是系统管理员的常见任务,通过读取/proc/stat文件,可以获取每个CPU的使用情况。

步骤:

  1. 创建一个脚本,定期读取/proc/stat文件。
  2. 计算每个CPU的使用百分比。
#!/bin/bash
# Script to monitor CPU usage

prev_idle=0
prev_total=0

while true; do
    # Read /proc/stat
    cpu_line=$(grep '^cpu ' /proc/stat)
    cpu_values=($cpu_line)

    # Calculate total and idle time
    idle=${cpu_values[4]}
    total=0
    for value in "${cpu_values[@]:1}"; do
        total=$((total + value))
    done

    # Calculate CPU usage
    diff_idle=$((idle - prev_idle))
    diff_total=$((total - prev_total))
    usage=$((100 * (diff_total - diff_idle) / diff_total))

    # Output the result
    echo "CPU Usage: $usage%"

    # Save the current values
    prev_idle=$idle
    prev_total=$total

    # Wait for a second
    sleep 1
done
  • 该脚本通过读取/proc/stat文件中的CPU信息,计算CPU的使用百分比,并每秒输出一次。
  • prev_idle和prev_total保存上次读取的值,以计算本次的变化量。

案例2:监控某个进程的内存使用情况

为了监控特定进程(假设PID为1234)的内存使用情况,可以读取/proc/1234/status文件。

步骤:

  1. 编写脚本定期读取/proc/1234/status文件。
  2. 提取VmRSS字段,显示进程的实际内存使用量。
#!/bin/bash
# Script to monitor a process's memory usage

pid=1234

while true; do
    if [ -d "/proc/$pid" ]; then
        mem_usage=$(grep VmRSS /proc/$pid/status | awk '{print $2}')
        echo "Process $pid Memory Usage: ${mem_usage}kB"
    else
        echo "Process $pid not found."
        exit 1
    fi
    sleep 1
done
  • 该脚本通过读取/proc/1234/status文件中的VmRSS字段,获取进程的实际内存使用量(单位为kB)。
  • 脚本每秒输出一次内存使用量。

案例3:检测系统打开文件句柄的数量

系统打开文件句柄的数量可以通过读取/proc/sys/fs/file-nr文件获取,这对监控资源使用情况很有帮助。

步骤:

  1. 编写脚本定期读取/proc/sys/fs/file-nr文件。
  2. 输出当前打开的文件句柄数量。
#!/bin/bash
# Script to monitor the number of open file handles

while true; do
    file_nr=$(cat /proc/sys/fs/file-nr | awk '{print $1}')
    echo "Open file handles: $file_nr"
    sleep 5
done
  • 该脚本通过读取/proc/sys/fs/file-nr文件,获取系统当前打开的文件句柄数量。
  • 脚本每5秒输出一次文件句柄数量。

案例4:监控网络连接状态

网络连接状态可以通过读取/proc/net/tcp文件获取,分析该文件可以监控TCP连接的数量和状态。

步骤:

  1. 编写脚本定期读取/proc/net/tcp文件。
  2. 统计不同状态的TCP连接数量。
#!/bin/bash
# Script to monitor TCP connections

while true; do
    echo "TCP Connections:"
    awk '{print $4}' /proc/net/tcp | sort | uniq -c
    sleep 10
done
  • 该脚本通过读取/proc/net/tcp文件,统计不同状态的TCP连接数量(如ESTABLISHED、TIME_WAIT等)。
  • 脚本每10秒输出一次连接状态统计。

案例5:监控和调优虚拟内存使用

虚拟内存管理是系统性能优化的重要方面,通过监控/proc/vmstat文件,可以了解系统的虚拟内存使用情况,并进行相应的调优。

步骤:

  1. 编写脚本定期读取/proc/vmstat文件。
  2. 监控关键字段,如pgfault(页面错误)、pgmajfault(主要页面错误)、pgfree(释放页面)等。
  3. 根据监控结果,调整系统的内存管理策略。
#!/bin/bash
# Script to monitor virtual memory usage

while true; do
    echo "Virtual Memory Stats:"
    grep -E 'pgfault|pgmajfault|pgfree' /proc/vmstat
    sleep 5
done
  • 该脚本通过读取/proc/vmstat文件,监控页面错误和内存释放情况。
  • 脚本每5秒输出一次虚拟内存使用统计。

案例6:分析进程的详细内存映射

通过/proc/[PID]/smaps文件,可以获取进程的详细内存映射信息,这对于诊断内存泄漏和优化内存使用非常有用。

步骤:

  1. 编写脚本读取/proc/[PID]/smaps文件。
  2. 分析每个内存区域的大小和使用情况,识别内存泄漏。
#!/bin/bash
# Script to analyze a process's memory mapping

pid=1234

if [ -d "/proc/$pid" ]; then
    echo "Memory Mapping for PID $pid:"
    cat /proc/$pid/smaps | awk '/^Size|^Rss|^Pss|^Swap/ {print $0}'
else
    echo "Process $pid not found."
fi
  • 该脚本通过读取/proc/1234/smaps文件,输出进程的每个内存区域的详细信息。
  • 包括内存区域的总大小(Size)、驻留集大小(Rss)、比例驻留集大小(Pss)和交换内存使用情况(Swap)。

案例7:实时监控系统的I/O活动

通过/proc/diskstats文件,可以监控系统的I/O活动,包括读取和写入操作的次数和字节数。

步骤:

  1. 编写脚本定期读取/proc/diskstats文件。
  2. 监控指定磁盘的I/O活动。
#!/bin/bash
# Script to monitor disk I/O activity

disk="sda"

while true; do
    echo "Disk I/O Stats for $disk:"
    grep "$disk" /proc/diskstats | awk '{print "Reads: " $4 " Writes: " $8}'
    sleep 5
done
  • 该脚本通过读取/proc/diskstats文件,监控指定磁盘(如sda)的读写操作次数。
  • 脚本每5秒输出一次磁盘I/O活动统计。

案例8:检查系统中断处理情况

通过/proc/interrupts文件,可以监控系统的中断处理情况,了解不同设备的中断频率。

步骤:

  1. 编写脚本定期读取/proc/interrupts文件。
  2. 输出中断处理统计信息。
#!/bin/bash
# Script to monitor interrupts

while true; do
    echo "Interrupts Stats:"
    cat /proc/interrupts
    sleep 10
done
  • 该脚本通过读取/proc/interrupts文件,输出系统中断处理的统计信息。
  • 脚本每10秒输出一次中断统计。

综合案例

下面是一个示例的Shell脚本,用于监控CPU和内存使用情况、磁盘空间、关键进程、网络流量以及系统日志。

#!/bin/bash

# CPU and Memory Usage Monitoring
cpu_threshold=80  # CPU使用率阈值
mem_threshold=90  # 内存使用率阈值

# Disk Space Monitoring
disk_threshold=10 # 磁盘剩余空间百分比阈值

# Process Monitoring
process="nginx"   # 要监控的进程名

# Network Traffic Monitoring
network_threshold=10000000  # 网络流量阈值,单位为字节

# Log Monitoring
log_file="/var/log/syslog"  # 要监控的日志文件

while true; do
    # CPU and Memory Usage
    cpu_usage=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
    mem_usage=$(free | awk '/Mem/{printf "%.2f", $3/$2 * 100}')

    echo "CPU Usage: $cpu_usage%"
    echo "Memory Usage: $mem_usage%"

    if (( $(echo "$cpu_usage > $cpu_threshold" | bc -l) )); then
        echo "CPU usage is above threshold!"
        # 可以添加发送报警邮件或短信的代码
    fi

    if (( $(echo "$mem_usage > $mem_threshold" | bc -l) )); then
        echo "Memory usage is above threshold!"
        # 可以添加发送报警邮件或短信的代码
    fi

    # Disk Space
    disk_usage=$(df -h | awk '/'\/dev\/sda1'/{print substr($5, 1, length($5)-1)}')
    echo "Disk Usage: $disk_usage%"
    if (( $disk_usage > $disk_threshold )); then
        echo "Disk space is running low!"
        # 可以添加发送报警邮件或短信的代码
    fi

    # Process Monitoring
    if ! pgrep -x "$process" >/dev/null; then
        echo "Process $process is not running!"
        # 可以添加发送报警邮件或短信的代码
    fi

    # Network Traffic Monitoring
    network_traffic=$(cat /proc/net/dev | grep "eth0" | awk '{print $2}')
    echo "Network Traffic: $network_traffic bytes"
    if (( $network_traffic > $network_threshold )); then
        echo "Network traffic is above threshold!"
        # 可以添加发送报警邮件或短信的代码
    fi

    # Log Monitoring
    if grep -q "ERROR" "$log_file"; then
        echo "Error detected in log file!"
        # 可以添加发送报警邮件或短信的代码
    fi

    sleep 60  # 每分钟检查一次
done

这个脚本会循环检查CPU和内存使用情况、磁盘空间、指定进程的运行状态、网络流量和系统日志,如果发现超过预设阈值的异常,就会触发相应的警报。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1796453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二叉树的先序创建、复制、深度及结点个数

文章目录 前言一、二叉树的先序创建二、二叉树的复制三、二叉树的深度四、二叉树的结点个数总结 前言 T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)。所用教材为《数据结构 C语言版…

每天坚持写java锻炼能力---第一天(6.4)

今天的目标是菜单: B站/马士兵的项目菜单 package java1;import java.util.Scanner;public class Test {public static void main(String[] args) {while(true){ //3.加入死循环,让输入一直有System.out.println();System.out.println("--->项…

DearLicy主题 小清新风格的博客主题源码 Typecho主题

简介 DearLicy主题,一款小众化小清新风格的博客主题 主题支持Typecho所支持的所有版本PHP 简约、小众、优雅 安装教程 1.将主题上传至/usr/themes/文件夹下解压 2.后台进行启用 3.访问前台查看效果 界面 下载地址:DearLicy主题 小清新风格的博客主…

c++ 里函数选择的优先级:普通函数、模板函数、万能引用,编译器选择哪个执行呢?

看大师写的代码时,除了在类里定义了 copy 构造函数,移动构造函数,还定义了对形参采取万能引用的构造函数,因此有个疑问,这时候的构造函数优先级是什么样的呢?简化逻辑测试一下,如下图&#xff0…

初探沁恒CH32V307VCT6评估板 2-1定时器TIM

定时器每隔一秒计次一次 1,创建 .C .H 文件 Timer.c Timer.h 2,包含头文件 #include "ch32v30x.h" //#include "debug.h" #include "Timer.h" 注意:如果不包含第一第二个头文件uint、int这些定义就会报…

力扣 48.旋转图像

题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],…

华为鲲鹏应用开发基础: 计算机系统概述(一)

1. 计算机系统演进及分类 1.1 计算机发展的四个阶段 1.2 当前计算机通常分为以下五类: 分类超级计算机大型计算机迷你计算机(服务器)微型计算机工作站特点• 功能最强、运算速度最快、 存储容量最大的计算机 • 多用于国家高科技领域和 尖端技术研究 例如,“神威太湖之光”…

Qt for Android 之 OpenCV编译(Windows下编译)

简介 前两天刚好更新了4.10, 这里以4.10作为示例进行编译, Qt版本是Qt6.6.2。 准备OpenCV的Android库 一. 使用官方编译好的库 1. 下载OpenCV android SDK opencv-4.10.0-android-sdk.zip 2. 解压缩 官方提供的包含了多个架构的opencv android库 二. 自行编译…

VS2015 +Qt 新建单元测试工程报错error LNK2019,error LNK2001: 无法解析的外部符号 WinMain

项目场景: 使用Qt5.9.9和vs2015进行单元测试工程的创建 问题描述 创建完成后,编译项目,报错: error LNK2019,error LNK2001: 无法解析的外部符号 WinMain 原因分析: 原因是笔者创建工程的时候&#xf…

创新案例 | AI数据驱动下的全域数字化转型的五大关键洞见

近年来通过全域数字化转型在竞争激烈的市场中脱颖而出。传统零食行业面临市场竞争加剧和消费者需求多样化的挑战,如何利用数据驱动和AI技术,能更好地实现会员运营效率和用户满意度的显著提升呢?本文将探讨全域数字化转型的五大关键洞见&#…

SQL刷题笔记day8——SQL进阶——表与索引操作

目录 1 创建一张新表 2 修改表 3 删除表 4 创建索引 5 删除索引 1 创建一张新表 我的答案 create table if not exists user_info_vip (id int(11) primary key auto_increment Comment自增ID, # 有了主键就不用写not nul了 uid int(11) unique not null Comment用户ID, …

SpringCloud Gateway中Route Predicate Factories详细说明

官网地址:https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/#gateway-request-predicates-factories Spring Cloud Gateway将路由匹配作为Spring WebFlux HandlerMapping基础架构的一部分。 Spring Cloud Gateway …

高效学习LabVIEW的方法

学习LabVIEW可以通过系统化课程、在线资源、自学实验、参与论坛、结合实际项目等多角度进行。系统课程提供全面基础,在线资源便于查漏补缺,自学实验强化理解,论坛互动解决疑难,结合实际项目应用提高实践技能。结合项目学习是最高效…

数据采集边缘网关解决企业数据采集痛点-天拓四方

随着信息技术的快速发展,企业对于数据采集和处理的需求日益增长。然而,传统的数据采集方式往往面临着数据量大、传输延迟、安全性不足等问题,给企业的运营和管理带来了诸多挑战。在这样的背景下,数据采集边缘网关应运而生&#xf…

Python | Leetcode Python题解之第136题只出现一次的数字

题目: 题解: class Solution:def singleNumber(self, nums: List[int]) -> int:return reduce(lambda x, y: x ^ y, nums)

MyEclipse中properties文件中文乱码(Unicode字符)解决办法

程序代码园发文地址:MyEclipse中properties文件中文乱码(Unicode字符)解决办法-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,MyEclipse中properties文件中文乱码(Unicode字符)解决办法htt…

从入门到精通:Java Lambda运算符详解!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

LINUX----进程替换,exec族函数

execl族函数的作用 exel族函数用于调用一个已经存在的可执行程序,将该程序的运行需要的代码区和数据区的数据覆盖原进程,这样就可以实现在一个进程中调度另一个进程. 简单实现一个小功能来看一看 mytest.c #include <stdio.h> #include <unistd.h>int main(){print…

UnityLeapMotion流程记录

突然接到一个LeapMotion的项目&#xff0c;回想起上次做LeapMotion还是在几年前&#xff0c;但是当时没有去记录&#xff0c;所以这次就相当于是重新走了一遍流程。很苦恼&#xff0c;赶紧记录下来。防止之后忘记。这次的需求还是比较简单的&#xff0c;用手滑动控制图片序列播…

MyBatisPlus——入门到进阶

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。&#x1f34e;个人主页&#xff1a;Meteors.的博客&#x1f49e;当前专栏&#xff1a;知识分享、知识备份✨特色专栏&#xff1a; 知识分享…