
Unix/Linux系统编程
文章平均质量分 94
Unix/Linux系统编程,包括文件IO,内存管理,进程编程,线程编程,网络编程...
JeffersonZU
Jefferson的线上笔记本。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux/Unix堆栈内存分配(malloc、free、realloc、calloc、memalign、posix_memalign、brk、sbrk、alloc)
本文介绍了内存分配的核心概念,重点讲解了堆内存的动态管理机制。堆内存通过`malloc`,`calloc`,`realloc`分配,使用`free`释放,其生命周期跨越函数作用域。详细解析了底层系统调用`brk`和`sbrk`的工作原理,以及`malloc`,`free`的实现原理:包括内存块结构、空闲列表管理和分配策略。特别强调了正确使用内存分配函数的注意事项,如避免重复释放、仅释放`malloc`分配的指针等。通过示例代码演示了内存分配的实际操作和效果。原创 2025-06-27 20:15:59 · 948 阅读 · 0 评论 -
Linux/Unix文件IO(文件描述符、原子操作、文件数据结构、open、read、write、fcntl、dup)
本文介绍了文件IO操作的两种方式:系统调用IO和标准IO。系统调用IO(如open、read、write等)是操作系统的底层接口,直接与内核交互但性能开销较大。标准IO在此基础上提供缓冲机制,减少系统调用次数。文章还深入探讨了原子操作实现、文件描述符的三层数据结构(描述符表、文件表、v-node表)以及文件控制函数fcntl和文件描述符复制函数(dup/dup2/dup3)的使用。这些机制共同保证了文件操作的高效性和数据一致性。原创 2025-07-02 19:25:43 · 894 阅读 · 0 评论 -
Linux/Unix线程及其同步(create、wait、exit、互斥锁、条件变量、多线程)
线程是轻量级并发执行单元,共享进程资源但独立运行。相比进程,线程创建开销小、切换高效,更适合多核并行和频繁通信场景。POSIX线程(Pthreads)提供跨平台API,包括线程创建(pthread_create)、终止(pthread_exit)、ID获取(pthread_self)和同步(pthread_join)等操作。线程同步通过互斥量(pthread_mutex_t)实现,确保共享资源访问的原子性:线程锁定互斥量后独占访问资源,解锁后释放。互斥量需初始化(PTHREAD_MUTEX_INITIALI原创 2025-07-04 00:35:08 · 930 阅读 · 0 评论 -
Linux/Unix进程概念及基本操作(PID、内存布局、虚拟内存、环境变量、fork、exit、wait、exec、system)
摘要 本文详细介绍了进程的基本概念和相关知识。主要内容包括:进程与程序的区别,进程号和父进程号的获取方法,进程内存布局的组成(程序段、数据段、栈和堆),虚拟内存管理的原理与优点(扩展内存、进程隔离、简化编程等),栈和栈帧的结构与功能,命令行参数argc和argv的使用方式,以及环境变量的访问和修改方法(通过environ、getenv、putenv等接口)。文章还通过代码示例展示了如何获取进程ID、操作环境变量等具体实现。原创 2025-07-02 18:25:02 · 1116 阅读 · 0 评论 -
Linux/Unix 套接字Socket编程(socket基本概念,流程,流式/数据报socket,Unix domain socket示例)
Socket(套接字)是网络通信的基础,提供了进程间数据交换的端点。文章介绍了socket的基本概念、通信域、通用地址结构体以及两种主要类型:流socket(TCP协议)和数据报socket(UDP协议)。详细讲解了流socket的客户端-服务端模型,包括listen()、accept()、connect()、recv()和send()等系统调用;以及数据报socket的无连接通信模型,涉及recvfrom()和sendto()等操作。文章还涵盖了socket的创建、绑定地址和关闭等基本操作,为网络编程提供原创 2025-07-06 01:09:45 · 864 阅读 · 0 评论