
Linux网络
文章平均质量分 89
打工人你好
https://github.com/woshixty
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux 多进程生产者消费者模型实现
生产者消费者模型是并发编程中的经典案例,本文通过一个具体的C++示例,演示如何在Linux环境下使用System V IPC机制实现跨进程的生产者消费者模型。(此处插入用户提供的完整生产者/消费者代码)原创 2025-02-18 23:24:38 · 1104 阅读 · 0 评论 -
Linux 信号量
信号量作为经典的进程同步工具,在系统级编程中仍具有重要地位。理解其底层机制并结合现代编程范式,能够帮助开发者构建更健壮的并发系统。在实际应用中,需要根据具体场景选择最合适的同步策略,平衡性能与安全性。在多进程/多线程编程中,当多个执行单元需要访问共享资源时,必须引入同步机制来保证数据一致性。信号量(Semaphore)正是解决这一问题的经典方案。原创 2025-02-17 23:58:44 · 1154 阅读 · 0 评论 -
Linux 基于共享内存的循环队列实现
特殊处理原因:共享内存对象不会自动调用构造函数。原创 2025-02-16 23:40:30 · 1004 阅读 · 0 评论 -
Linux 共享内存
而共享内存要求数据存储在连续的物理内存中,因此在定义共享内存中的结构体时,需要使用固定大小的字符数组(如 char[])来存储字符串。Redis 的持久化模块使用共享内存来映射内存数据到磁盘文件,这大大提升了 RDB 快照生成的效率,减少了数据持久化过程中的 I/O 操作时间。传统的 IPC 方式如管道、消息队列等,在数据传输时都需要内核参与复制操作,而共享内存通过直接内存访问的方式,将通信性能提升了数量级。将共享内存映射到自己的虚拟地址空间,这样进程就可以直接读写共享内存中的数据。原创 2025-02-12 00:19:31 · 1382 阅读 · 0 评论 -
Linux 多进程与信号
在多进程编程中,信号可以用于进程间通信和协作。例如,父进程可以向子进程发送信号,通知其执行特定任务或退出。在 Linux 系统中,进程是资源分配的基本单位,而信号则是进程间通信的一种重要方式。多进程编程结合信号处理,可以实现复杂的并发控制和进程间协作。信号是 Linux 系统中用于进程间通信的一种机制。进程是正在执行的程序的一个实例。多进程编程允许程序同时执行多个任务,提高程序的并发性和响应速度。当进程接收到信号时,会执行相应的处理函数。创建子进程,每个子进程都与父进程并发执行不同的任务。原创 2025-02-10 10:29:24 · 369 阅读 · 0 评论 -
Linux 僵尸进程与孤儿进程
当一个进程调用exit()函数正常或异常终止时,内核会将进程的状态设置为终止状态,并保留进程的一些信息,例如退出码、CPU 使用时间等。此时,进程的绝大部分资源(如内存、文件描述符等)都会被释放,但进程的进程控制块(PCB)仍然保留在系统中,以便父进程可以获取子进程的退出信息。这种处于终止状态但仍然占用少量系统资源的进程被称为僵尸进程。当一个父进程在子进程之前终止时,子进程就会变成孤儿进程。此时,init 进程(进程 ID 为 1)会自动接管孤儿进程,成为它们的父进程。原创 2025-02-09 18:32:31 · 1013 阅读 · 0 评论 -
Linux 创建进程 fork()、vfork() 与进程管理
在Linux中,父进程和子进程共享文件描述符,这意味着它们对同一个文件的操作可能相互影响。例如,如果父进程和子进程都操作同一个文件描述符,文件的偏移量可能会改变,从而导致输出混合。进程标识符用于标识和管理进程。系统调用的工作原理基于复制父进程的虚拟内存空间并为子进程创建一个新的进程。时,当前进程(父进程)会复制一份新的进程(子进程)。不会复制父进程的虚拟内存,而是让父进程暂时停止执行,直到子进程调用。运行该代码时,父子进程会并行执行,打印各自的进程ID。会让子进程与父进程共享内存空间,父进程在子进程调用。原创 2025-02-09 18:03:46 · 1218 阅读 · 0 评论 -
Linux 调用可执行程序
system()函数和exec()函数族都是在 Linux 中调用可执行程序的常用方法。system()函数使用简单,但开销较大,且存在安全风险;exec()函数族效率高,但使用稍复杂。原创 2025-02-08 23:22:59 · 1255 阅读 · 0 评论 -
Linux 进程终止
在多线程程序中,整个进程的终止通常由最后一个线程退出时触发。可以通过主线程的返回或者调用来实现。// 线程退出// 等待线程结束return 0;原创 2025-02-04 15:31:25 · 848 阅读 · 0 评论 -
Linux 信号机制
进程可以定义一个函数来处理接收到的信号,并在该函数中执行特定的操作。例如,处理SIGTERM// 执行清理操作// exit(0);// 捕获 SIGTERM 信号while(1) {sleep(1);// 模拟进程持续运行。原创 2025-02-04 14:02:01 · 1218 阅读 · 0 评论 -
Linux 目录和文件的库函数简介
1. access() 库函数2. stat() 库函数2.1 struct stat 结构体3. utime() 库函数4. rename() 库函数5. remove() 库函数扩展知识在 Linux 系统编程中,我们经常需要对文件和目录进行各种操作,例如检查文件权限、获取文件信息、修改文件时间、重命名文件以及删除文件等。C 语言标准库和 Linux 系统提供了一系列相关的库函数,方便我们进行这些操作。下面将简单介绍。原创 2025-01-23 00:24:34 · 715 阅读 · 0 评论 -
Linux 系统错误处理简介
1. `errno`:错误代码的载体2. `strerror()`:错误信息的翻译官3. `perror()`:便捷的错误信息输出4. 系统调用与库函数的区别5. 错误处理的最佳实践在 C/C++ 程序开发中,我们经常需要处理各种错误情况Linux 系统提供了一套完善的错误处理机制,通过全局变量errno和相关的库函数,我们可以方便地定位和处理错误。原创 2025-01-22 23:52:28 · 786 阅读 · 0 评论 -
Linux 目录操作详解
本文将介绍常用的Linux目录操作函数,包括获取当前工作目录、切换工作目录、创建和删除目录等操作。获取目录中的文件列表通常需要遍历目录。这是一个较为简化的函数,不需要传入缓冲区,它会动态分配内存来存储当前目录的路径。该函数用于获取当前进程的工作目录,并将路径存储在用户提供的缓冲区中。调用此函数后,返回的字符串指向当前工作目录的路径,使用完后需要调用。Linux提供了两个常用函数来获取当前工作目录。结构体,该结构体定义了目录项的相关信息。该函数用于改变当前进程的工作目录。函数获取目录项时,返回的是一个。原创 2025-01-22 00:21:06 · 1614 阅读 · 0 评论 -
Linux 时间操作详解
Linux 提供了多种强大的时间操作工具,从基本的time_t和tm结构体,到高精度的chrono库,再到支持微秒级精度的。不同的函数和库满足了不同场景下对时间的需求,比如获取当前时间、进行时间测量、暂停程序执行、以及处理不同的时区。原创 2025-01-20 20:33:56 · 1093 阅读 · 0 评论 -
Linux 使用 GDB 进行调试的常用命令与技巧
GDB(GNU Debugger)是一个功能强大的调试工具,可以帮助开发者在程序运行过程中查找和修复问题。本文将介绍如何使用 GDB 调试程序,包括常用命令、调试 core 文件和正在运行的程序。当程序崩溃时,系统可能会生成一个 core 文件,包含了程序的内存快照和崩溃时的状态信息。使用 GDB 可以帮助分析这些文件。GDB 也可以用于调试正在运行的程序。你可以附加到一个已经启动的进程,并实时调试它。命令将 GDB 附加到一个正在运行的进程。在调试正在运行的程序时,你可以在进程中的特定位置设置断点。原创 2025-01-20 20:13:46 · 1121 阅读 · 0 评论 -
main函数的参数及环境变量操作
函数的参数及其操作环境变量的方法,对于开发高效、可移植的程序至关重要。函数来操作环境变量。环境变量存储了程序运行时的配置信息,它们在程序中可用于修改或读取配置。参数,如何操作环境变量,包括设置和获取环境变量的基本方法。环境变量,该程序将输出其值,否则输出未找到。运行该程序时,假设传入参数为。函数是程序的入口点。在C语言中,可以使用。原创 2025-01-20 19:50:49 · 466 阅读 · 0 评论 -
Linux Makefile简介与实操
一、概述二、Makefile的基本构成一个简单的Makefile例子常见指令与变量三、实操Demo:使用静态库与动态库解释四、CMake与Makefile的区别与关联CMake简介CMake与Makefile的区别关联Makefile 是在软件开发中,用来自动化构建过程的文件,主要用于管理项目中的代码编译、链接等操作。它包含了一系列的指令和变量,通过这些指令,Make工具可以根据Makefile中的定义来执行编译、打包等操作,极大地提高开发效率。原创 2025-01-20 19:40:36 · 1120 阅读 · 0 评论 -
Linux静态库与动态库的理解
静态库:适合那些需要自包含的程序,这样程序在运行时不依赖外部库文件。动态库:适合那些需要共享库的程序,能够节省内存,并且当库更新时,程序无需重新编译。原创 2025-01-20 19:24:18 · 721 阅读 · 0 评论