系统编程

hope_wisdom8 天前
linux·信号处理·系统编程·信号·signal·sigaction
Linux系统编程之基本信号处理在前一篇文章中我们已经提到过,信号本质上是一个整数编号,每个编号对应一种特定类型的事件。当某个条件满足时,操作系统会生成相应的信号,并将其传递给目标进程。接收到信号后,进程可以选择忽略它、执行默认动作、或调用自定义的处理函数来响应。
伊灵eLing10 天前
c语言·系统编程·源码解析·hustoj·online judge·在线判题系统
【HUSTOJ 判题机源码解读系列01】判题机架构、判题流程浅析HUSTOJ 是一个开源的在线判题系统,很早之前就已经开发了,在源码里我甚至看到过 2008 年的 Git 提交记录(也有可能没这么早,记不太清了),时至本篇博客编写之际,2025 年了作者还在维护更新。
史嘉庆18 天前
linux·c++·系统编程
Linux系统 环境变量对于环境变量,本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”,我们会更详细讲解;理解环境变量的全局属性 —— 环境变量是可以被子进程继承(注意区分 C++ 里的继承);环境变量的组织方式。其次会介绍命令行参数 —— main 函数的参数。
利刃大大1 个月前
linux·c语言·进程·系统编程
【Linux系统编程】二、Linux进程概念进程(Process)是计算机中的一个具有独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
UtopiaYouth2 个月前
linux·c语言·ubuntu·网络编程·系统编程
第五章 Linux 网络编程提示:欢迎查看本文所属专栏:Linux 网络编程笔记,在这里你可以学习 Linux 命令的基本使用、远程开发 Linux程序、计算机网络基础知识、操作系统基础知识和 Linux 网络编程基础等,这些知识,可以帮助我们很好的入门 Cpp服务器开发 所需的网络编程知识。
蜗牛沐雨2 个月前
开发语言·c++·编程语言·系统编程
深入探讨C++中的互斥锁管理:`std::lock_guard`与`std::unique_lock`在C++多线程编程的世界里,确保数据在并发访问时的一致性和安全性是至关重要的。互斥锁(mutex)是实现这一目标的关键工具之一。然而,手动管理互斥锁往往容易出错,尤其是在异常处理和复杂的控制流中。C++11标准库引入了两种基于RAII(Resource Acquisition Is Initialization)概念的互斥锁管理工具:std::lock_guard和std::unique_lock。这两种工具不仅简化了互斥锁的使用,还帮助开发者避免了因忘记解锁而导致的死锁问题。本文将深入探讨这两种锁管理工
丶Darling.2 个月前
linux·网络编程·进程同步·系统编程·c/c++·阻塞和非阻塞
进程间通信博客总结目录进程间通信方式—管道(使用最简单)-CSDN博客进程间通信方式—文件(已经过时的东西看一遍有个印象)-CSDN博客
丶Darling.2 个月前
linux·服务器·网络编程·目录·系统编程·c/c++·博客总结
linux高性能服务器编程读书笔记目录&&建议Linux高性能服务器编程 | 读书笔记 | 1. IP协议-CSDN博客Linux高性能服务器编程 | 读书笔记 | 2. TCP协议-CSDN博客
昵称p6 个月前
linux·数据库·系统编程
系统编程-数据库目录数据库引入1、先安装数据库2、数据库设置密码3、数据库的进入和退出(前提 你的密码更改过了)数据库的基本操作
昵称p6 个月前
linux·lvgl·系统编程
系统编程-lvgl目录带界面的MP3播放器 -- lvgl一、什么是lvgl?二、简单使用lvgl在工程中编写代码实现带界面的mp3播放器
Stitch .10 个月前
开发语言·笔记·vscode·后端·rust·系统编程
第二章Rust 基本概念(Rust 实战 Rust in Action7)从现在开始,友友们和小北正式踏入了 Rust 大陆,这片广袤而神秘的世界,在这个世界中,将接触到很多之前都没有听过的概念:
佟晖1 年前
linux·系统编程
Linux进程通信-POSIX IPCLinux POSIX IPC的可移植性是不如System V IPC的,但是我们只用Linux,并且内核版本高于2.6.6的话就不存在该问题了。也因为POSIX IPC出现的比较晚,借鉴了systemV IPC的长处,规避其短处,使得POSIX IPC的接口更易用。进程间通信的手段很多,除了消息队列、信号量、共享内存,还有信号、socket、管道,普通的管道需要祖先进程有联系,具名管道可以应用于无关联的进程。
佟晖1 年前
linux·系统编程
Linux线程间交互上一篇说过,系统会为线程mmap一块内存,每个线程有自己的私有栈,使用局部变量没啥问题。但是实际场景中不可避免的需要线程之间共享数据,这就需要确保每个线程看到的数据是一样的,如果大家都只需要读这块数据没有问题,但是当有了修改共享区域的需求时就会出现数据不一致的问题。甚至线程2的任务在执行到某个地方的时候,需要线程1先做好准备工作,出现顺序依赖的情况。为了解决这些问题,Linux提供了多种API来适用于不同的场景。
佟晖1 年前
linux·系统编程
Linux线程API使用与分析线程是操作系统进程调度器可调度的最小粒度的执行单元执行ps -eLF查看线程通过输出看到是cpptools的进程 103724,它拥有多个线程,LWP就是线程ID,第一行的LWP 103724 == PID,表明是该线程组的主线程。NLWP表示该线程组有多少个线程(14个)。
佟晖1 年前
linux·系统编程
程序启停分析与进程常用API的使用进程是程序运行的实例,操作系统为进程分配独立的资源,使之拥有独立的空间,互不干扰。拿c程序来说,其空间布局包括如下几个部分:
佟晖1 年前
linux·网络·系统编程
I/O多路复用与socket简单来讲I/O多路复用就是用一个进程来监听多个文件描述符(fd),我们将监听的fd通过系统调用注册到内核中,如果有一个或多个fd可读或可写,内核会通知应用程序来对这些fd做读写操作,select、poll、epoll都是用于处理此类问题的系统API,只不过注册和调用的方式略有不同。 例如telnet命令的操作,telnet命令从shell读入数据然后写到socket fd上,同时也需要从socket fd上读数据写到shell上。telnet server需要从socket读出命令并发送给shell,再将
ZHANGα1 年前
linux·c语言·开发语言·系统编程
Day06(下) Liunx高级系统设计7-磁盘映射与共享内存shmget函数1.获取唯一key值2.获取共享内存标识符3.建立共享内存映射4.操作映射1.读2.写
林沐华1 年前
linux·运维·服务器·c++·unix·系统编程
【APUE】进程间通信目录一、管道1.1 匿名管道1.2 命名管道二、XSI IPC2.1 概述2.2 消息队列2.2.1 msgget
@新法1 年前
linux·服务器·零拷贝·系统编程
Linux 零拷贝splice函数splice 是 Linux 系统中用于在两个文件描述符之间移动数据的系统调用。它的主要作用是在两个文件描述符之间传输数据,而无需在用户空间进行数据拷贝。也是零拷贝操作.
佟晖1 年前
linux·网络·系统编程
Linux socket APIsocket是进程通信机制的一种,与PIPE、FIFO不同的是,socket即可以在同一台主机通信(unix domain),也可以通过网络在不同主机上的进程间通信(如:ipv4、ipv6),例如因特网,应用层通过调用socket API来与内核TCP/IP协议栈的通信,通过网络字节实现不用主机之间的数据传输。