E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
IT系统编程
Linux
系统编程
6(线程互斥,锁,同步,生产消费模型)
上篇文章介绍完线程的概念后,我们将在这篇文章中初步探讨线程编程以及线程应用中的问题,这篇文章将以抢票系统为例,贯穿整篇文章。笔者将介绍在多线程编程中会出现的问题,什么是同步?什么是互斥?为什么多线程编程常有加锁的概念,什么又是生产者和消费者模型,读完这篇文章,你会得到相应的答案,笔者这里强烈建议各位把文中给出的demo示例自己实现一遍多线程这部分必须要理论和实操相结合,并不像前面虚拟地址空间,页表
浪雨123
·
2023-09-19 03:22
Linux(基础使用
系统编程
网络编程)
linux
服务器
《Linux
系统编程
训练营》8_Linux 终端与进程
详解控制台与终端有趣的问题:Linux的终端,控制台,TTY,PTY究竟是什么?它们与进程有什么关系?历史回顾:控制台控制台是一个直接控制设备的面板(属于设备的一部分)计算机设备的控制台:按键&指示灯(键盘&显示器)早期的电子计算机必然有一个控制台历史回顾:终端(Terminal)终端是一台独立于计算机的机器,是能够用来和计算机进行交互的设备TTY--即:TeleTypeWriter电传打字机,一
·
2023-09-18 21:57
linux
【Linux操作系统】基于消息队列的银行管理系统<客户端>代码详细分析
这是一个基于信息队列的银行管理系统客户端的项目代码详细讲解,主要介绍了开户、存款、取款等等任务在客户端的运行,代码比较简单,但是每一段代码都进行了详细的讲解,源代码主要来源于:Linux
系统编程
阶段项目
嵌入式小白—小黑
·
2023-09-18 20:06
从FreeRTOS到Linux
linux
运维
服务器
《Linux
系统编程
训练营》7_进程创建大盘点
vfork与进程创建进程创建回顾intcreate_process(char*path,char*args[],char*env[]){intret=fork();if(ret==0){execve(path,args,env);}returnret;}问题:进程创建是否只能依赖于fork()和execve()函数?再论进程创建fork()通过完整复制当前进程的方式创建新进程execve()根据参
·
2023-09-18 16:10
linux
《Linux
系统编程
训练营》6_深入 Linux 系统
进程的数据输入输出问题:进程参数和环境变量对于进程意味着什么?进程参数和环境变量的意义一般情况下,子进程的创建是为了解决某个子问题子进程解决问题需要父进程"数据输入"(进程参数&环境变量)设计原则:子进程启动时必然用到的参数使用进程参数传递子进程解决问题可能用到的参数使用环境变量传递思考:子进程如何将结果返回父进程?#includeintmain(){printf("Test:HelloWorld
·
2023-09-18 16:01
linux
《Linux
系统编程
训练营》5_环境变量编程
初识环境变量问题:环境变量是什么?有什么意义?intcreate_process(char*path,char*args[]){intret=fork();if(ret==0){execve(path,args,NULL);}returnret;}main函数(默认进程入口)intmain(intargc,char*argv[],char*env[])argc命令行参数个数(启动参数)argv[]
·
2023-09-18 16:55
linux
汇编指令概述 AT&T汇编基本语法
CMU15213_课件深入理解计算机系统-笔记-第一章-计算机系统漫游uCoreOS实验指导书和源码网址(2017)How-to-Make-a-Computer-Operating-System各章节代码linux
系统编程
双系统安装
Z初的梦想
·
2023-09-17 12:24
汇编
文章汇总 | 老板们,周末愉快
Linux
系统编程
篇Linux-C编程|3分钟快速了解信号驱动式IOLinux-C编程/进程通信/实现基于SysV消息队列的文件服务器Linux-C编程/多线程/一个简洁可靠的线程池实现Linux-C编程
老吴的嵌入式之旅
·
2023-09-17 10:15
Mojo编程语言是AI人工智能的新的编程语言
Mojo被认为是Python的超集,兼容Python生态,但添加了
系统编程
和编译期优化的特性,以提高性能和部署效率。Mojo基于MLIR,可以支持多种硬件加速器,包括CPU、GPU和其他xPU。
软件架构师-叶秋
·
2023-09-16 17:55
常用软件开发工具推荐
人工智能
mojo
【Linux】线程的概念
:2.查看线程2.1链接线程库:2.2ps-aL:3.页表的认识3.1二级页表:3.2页表的实际大小:4.再看线程4.1线程总结:4.2线程的优点:4.3线程的缺点:前言从本章开始,我们进入Linux
系统编程
最后一节多线程的学习
yy_上上谦
·
2023-09-16 13:38
Linux
linux
服务器
Linux
系统编程
—socket网络编程
Linux
系统编程
—socket网络编程理论概念1.TCP与UDP对比端口号作用socket开发过程服务端1.socket创建套接字2.bind绑定IP+端口3.listen监听客户端4.accept接收客户端
不会编程的小江江
·
2023-09-16 04:25
linux系统编程
linux
c语言
网络
线程池的实现
目录一、线程池的实现1.什么是线程池2.设计线程类3.设计线程池类4.运行5.RAII加锁改造二、利用单例模式改造线程池1.复习2.饿汉模式3.懒汉模式关于
系统编程
的知识我们已经学完了,最后我们需要利用之前写过的代码实现一个线程池
聪明的骑士
·
2023-09-16 01:37
Linux
开发语言
c++
算法
linux
数据结构
【Linux
系统编程
】signal与sigaction
#includetypedefvoid(*sighandler_t)(int);sighandler_tsignal(intsignum,sighandler_thandler);sighandler_t参数是一个无返回值,参数为int的函数指针。signum参数代表多少号信号。man手册中的解释:signal()的行为因UNIX版本而异,并且还具有历史上不同版本的Linux各不相同。避免其使用:
小鳄鱼爱吃薯片
·
2023-09-15 22:23
Linux系统编程
算法
开发语言
linux
Linux
系统编程
(二):文件和目录
参考引用UNIX环境高级编程(第3版)黑马程序员-Linux
系统编程
1.文件存储一个文件主要由两部分组成,dentry(目录项)和Inode所谓的删除文件,就是删除Inode,但数据其实还是在硬盘上,以后会覆盖掉
Robot_Yue
·
2023-09-15 21:14
Linux系统编程
linux
运维
服务器
c++
学习
笔记
算法
Linux
系统编程
--IO系统调用
文章目录一、I/O系统调用1.open()打开文件1.1所需基础知识1.2.open()详解1.3示例代码2.read()读取文件2.1.基础知识2.2.read()详解2.3.读入所有字节3.write()写文件3.1.基础背景知识3.2.write()详解3.3.示例代码3.4.注意点3.4.1.同步IO1.fsync()和fdatasync()2.sync()4.close()关闭文件5.l
ccb_
·
2023-09-15 20:04
Linux
linux
运维
服务器
Linux
系统编程
-C++ I/O库
文章目录一、总述二、输出缓冲三、文件输入输出四、string流五、输入输出格式总述1、控制布尔值的格式2、指定整型值的进制3、在输出中指出进制4、控制浮点数格式4.1、指定打印精度5、输出空白六、未格式化的输入输出操作一、总述C++使用标准库类来处理面向流的输入和输出:iostream处理控制台IO。fstream处理命名文件IO。stringstream完成内存string的IO。头文件类型io
ccb_
·
2023-09-15 20:01
Linux
linux
c++
java
操作系统启动过程
socket/stl/awklinux软硬件驱动Linux程序设计中文版第四版Linux中国翻译项目VimPracticeLinux命令必知必会Unix环境高级编程代码&学习笔记ubuntudeb软件包搜索下载
系统编程
Z初的梦想
·
2023-09-15 15:39
嵌入式硬件
stm32
2018-08-16 Linux系统基础及安全
系统编程
:搭建开发环境,了解Linux上程序开发过程。编辑工具:Vim、IDE;编译工
kotw_zjc
·
2023-09-15 14:09
【Linux
系统编程
】冯诺依曼体系结构
文章目录1.冯诺依曼体系结构2.为什么要存储器(内存)?作用是什么?3.数据流向分析这篇文章,我们来认识一下冯诺依曼体系结构1.冯诺依曼体系结构我们常见的计算机,如笔记本;我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系那我们接下来就来分析一下这个体系结构:首先输入设备比如我们所熟悉的键盘、话筒、摄像头、网卡、磁盘等,就是输入设备。那输入设备的作用是什么呢?,计算机呢本质其实就是来计算和处理
YIN_尹
·
2023-09-15 11:57
Linux
系统编程
linux
运维
服务器
Linux
系统编程
多线程(C++)
目录【1】引入如何看待地址空间和列表【2】什么是线程【3】线程的优点【4】线程的缺点【5】线程异常【6】线程用途【7】线程VS进程【8】Linux线程控制【8.1】查看轻量级线程指令【8.2】线程创建【8.2.1】POSIX线程库【8.2.2】创建线程【8.2.3】一次性创建一个线程【8.2.4】一次性创建多个线程【8.2】线程终止【8.3】线程取消【8.4】线程等待【8.5】分离线程【9】线程I
傻响
·
2023-09-14 13:51
Linux
linux
进程篇——进程间通信:共享内存
QQ群号:513683159【相互学习】内容来源: 《Linux
系统编程
》、《Linux网络编程》、《Unix环境高级编程》目录:共享内存一、函数简介(1)shmget()——共享内存创建函数(2)shmat
惺忪牛犊子
·
2023-09-14 13:43
嵌入式
c语言
linux
运维
linux 下内存泄漏分析
linux下内存泄漏分析Linux下内存问题检测神器:Valgrind在写大型C/C++工程时难免会发生内存泄漏现象,
系统编程
中一个重要的方面就是有效地处理与内存相关的问题。
Z初的梦想
·
2023-09-14 08:10
stm32
单片机
嵌入式硬件
Linux下的
系统编程
——信号(十一)
前言:信号在我们的生活中随处可见,如:古代战争中摔杯为号;现代战争中的信号弹;体育比赛中使用的信号枪......他们都有共性,信号是信息的载体,Linux/UNIX环境下,古老、经典的通信方式,现下依然是主要的通信手段。Unix早期版本就提供了信号机制,但不可靠,信号可能丢失。Berkeley和AT&T都对信号模型做了更改,增加了可靠信号机制。但彼此不兼容。POSIX.1对可靠信号例程进行了标准化
我想学LINUX
·
2023-09-14 08:30
linux
ubuntu
信号
alarm
kill
setitimer
信号捕捉
【Linux
系统编程
】文件描述符与重定向
#includeintdup(intoldfd);intdup2(intoldfd,intnewfd);dup函数是让最低位没有被使用的文件描述符也指向oldfd这个文件描述符所指向的文件,成功返回最低那个没有被使用的文件描述符,失败返回-1。dup2函数是让newfd这个文件描述符也指向oldfd这个文件描述符所指向的文件,如果newfd已经被使用了,那么就关闭它所指向的文件,让newfd指向o
小鳄鱼爱吃薯片
·
2023-09-13 21:31
Linux系统编程
算法
数据结构
linux
系统编程
目录摘要一、linux系统调用文件操作1.1系统调用基本概念1.2文件I/O基础1.2.1文件描述符1.2.2open打开文件1.2.3read函数1.2.4write函数1.2.5close函数1.2.6lseek函数1.2.7示例代码1.3静态文件与inode1.4终止运行1.4.1_exit()和_Exit()函数1.4.2exit()函数二、C标准库文件操作2.1标准I/O库简介2.2标准
别问,问就是全会
·
2023-09-13 21:35
嵌入式系统
linux
深入了解fcntl函数:Linux
系统编程
中的文件控制
文章目录概述介绍函数原型与参数拓展:fcntl改文件属性总结概述摘要:fcntl函数是Linux
系统编程
中一个重要的函数,用于对文件描述符进行各种控制操作。
LewGarben
·
2023-09-13 03:46
linux
运维
服务器
Linux
系统编程
(一):文件 I/O
参考引用UNIX环境高级编程(第3版)黑马程序员-Linux
系统编程
1.UNIX基础知识1.1UNIX体系结构(下图所示)从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境
Robot_Yue
·
2023-09-13 00:04
Linux系统编程
linux
学习
笔记
服务器
机器人
c语言
Golang(四)语言特性(上)
Golang是一种强类型的通用
系统编程
语言,具有垃圾回收机制并明确支持并发编程。
云时代的运维开发
·
2023-09-12 13:08
《Linux
系统编程
训练营》4_进程参数编程
进程空间概要分析问题execve(...)的参数分别是什么?有什么意义?intcreate_process(char*path,char*args[]){intret=fork();if(ret==0){execve(path,args,NULL);}returnret;}execve的本质是系统调用而非函数!!main函数(默认进程入口)intmain(intargc,char*argv[])a
·
2023-09-11 23:37
linux
Linux
系统编程
笔记--系统(文件)I/O操作
目录1--文件描述符2--系统I/O常用函数3--标准I/O和系统I/O的区别4--原子操作5--dup()和dup2()6--fcntl()和ioctl()1--文件描述符文件描述符的实质:一个整型数,一个数组下标(数组的元素指向文件结构体);文件描述符优先使用可用范围内最小的;标准输入(stdin)的文件描述符为0;标准输出(stdout)的文件描述符为1;标准错误(stderr)的文件描述符
晓晓纳兰容若
·
2023-09-11 08:29
linux系统编程
linux
Linux
系统编程
02--vim-gcc库的制作与使用
作者介绍1.1vim的三种模式1.2编辑模式下光标的移动1.3vim下的删除1.4vim中的撤销与反撤销1.5vim中的复制与粘贴1.6查找和替换1.7vim文本输入模式下的指令1.8vim末行模式下的命令(已熟悉)1.9vim的快速翻屏1.10vim的配置文件2.gcc的工作流程(继续熟悉)3.静态库和动态库的制作和使用3.1库的介绍3.2静态库的制作与使用3.3动态库(共享库)---nmtes
骊山道童
·
2023-09-10 19:58
Linux操作系统
linux
vim
编辑器
浅析linux异步io框架 io_uring
目录背景简介io_uring系统APIliburing高级特性编程示例性能对比模式对比线上应用背景简介熟悉Linux
系统编程
的同学都清楚,Linux并没有提供完善的异步IO(网络IO、磁
linux大本营
·
2023-09-10 06:49
linux
linux内核
异步io
io_uring
epoll
Linux下的
系统编程
——共享存储映射(十)
前言:mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这一段内存,而系统会自动回写脏页面到对应的文件磁盘上,即完成了对文件的操作而不必再调用read,write等系统调用函数。相反,内核空间对这段区域的修改也直接反映用户空间,从而可以实现不同进程间的
我想学LINUX
·
2023-09-09 09:27
linux
mmap函数
存储映射I/O
文件间进程通信
创建共享内存
mmap通信
映射区
c语言嵌入式
系统编程
软件,C语言嵌入式
系统编程
软件设计研究论文
C语言嵌入式
系统编程
软件设计研究论文摘要:近年来,C语言编程在嵌入式系统越来越受到广大技术人员的青睐。
黄之昊
·
2023-09-08 11:26
c语言嵌入式系统编程软件
c语言编程中的注意事项,C语言在嵌入式
系统编程
时的注意事项(四)
姓名:徐娇学号:17011210547转自http://mp.weixin.qq.com/s/YUXrJbin_rnwModTY2Ds_A【嵌牛导读】C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出
LiJing李敬李敬
·
2023-09-08 11:55
c语言编程中的注意事项
C语言嵌入式
系统编程
注意事项之内存操作
C语言嵌入式
系统编程
注意事项之内存操作在嵌入式系统的编程中,常常要求在特定的内存单元读写内容,汇编有对应的MOV指令,而除C/C++以外的其它编程语言基本没有直接访问绝对地址的能力数据指针在嵌入式系统的编程中
m0_61687959
·
2023-09-08 11:49
算法
《Unix
系统编程
手册》第三章
系统编程
概念学习
系统调用系统调用是内核提供的受控的内核入口,通过API的形式,内核提供了一系列服务供程序调用。系统调用基本特点:1、系统调用会从用户态切换到核心态,以便CPU访问受到保护的内核内存;2、系统调用的组成是固定的,每个系统调用都由唯一的数字来标识(程序通过名称标识系统调用);3、每个系统调用可以使用一套参数,对用户空间和内核空间传递的信息进行规范。系统调用执行的基本步骤:1、应用程序通过调用包装后的库
i_actor
·
2023-09-07 23:55
Unix
unix
服务器
C\C++
《Linux
系统编程
训练营》3_初试 Linux 进程
问题:strace输出中的execve(...)究竟是什么?进程理论状态切换进程生命周期Linux进程基本概念进程是Linux任务的执行单元,也是Linux系统资源的分配单位每个Linux应用程序运行后由一个或多个进程一个Linux进程可以执行一个或多个程序Linux进程有多种不同状态(即:Linux进程有不同的活法)Linux进程状态剖析就绪/运行状态(R):TASK_RUNNING阻塞状态:可
·
2023-09-07 22:40
linux
【译】没有开销的抽象:Rust 中的 traits
traitsinRustMay11,2015·AaronTuron之前的文章已经介绍了Rust设计的两大支柱:没有垃圾回收的内存安全没有数据争用的并发本文将会探讨第三大支柱:没有开销的抽象使得C++非常适合
系统编程
的信条和品质就是零成本抽象原则
袁世超
·
2023-09-07 20:15
【C++漂流记】一文搞懂指针的定义和使用、野指针、空指针、const修饰指针、指针与数组、指针与函数
指针在内存管理、数据结构、
系统编程
等领域有广泛应用。使用指针时需要注意指针的正确性和安全性,避免空指针、野指针等错误的使用方式,以避免程序出现不可预期的行为。
嵌入式小白—小黑
·
2023-09-07 17:10
C++漂流记
c++
开发语言
嵌入式硬件
浅谈Rust--学习心得及rust的优势与劣势
Rust是一门
系统编程
语言,专注于安全、并发和内存控制。它的设计目标是提供更好的内存安全和并发性能,同时保持与C++相似的性能和效率。
Devil枫
·
2023-09-07 11:00
知识分享
rust
java
开发语言
【网络编程】C++实现网络通信服务器程序||计算机网络课设||Linux
系统编程
||TCP协议(附源码)
TCP网络服务器1.程序简洁2.服务端ServerTcp程序介绍3.线程池ThreadPool介绍4.任务类Task介绍5.客户端Client介绍6.运行结果:7.源码7.1serverTcp.cc7.2ThreadPool.hpp7.3Task.hpp7.4ClientTcp.cc7.5Lock.hpp7.7头文件util.hpp7.6Makefile文件7.8日志文件log.hpp1.程序简洁
X.Dragon
·
2023-09-07 07:42
Linux
计算机网络
网络
c++
计算机网络
linux
TCP
服务器
tcp/ip
Linux
系统编程
——进程间通信
1.进程间通信(IPC)概述2.管道通信原理2.1特点管道中的数据读走就没了2.2原型Demo3.无名管道3.1pipe函数3.1.1参数说明pipefd:存在两个元素的整型数组3.1.2返回值成功:0失败:-1Demo3.创建命名管道(FIFO)3.1特点3.2mkfifo函数3.2.1参数说明pathname:创建管道的路径名mode:创建命名管道的类型(同open中的mode——0600)3
鲟迹
·
2023-09-07 04:28
linux
Linux
系统编程
——进程间的通信(三)消息队列原理以及用法
消息队列是消息的链接表,存放在内核中,一个消息队列由一个标识符(队列ID)来标识。特点:1、消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级2、消息队列独立于发送与接收进程,进程终止时,消息队列中的内容不会被删除3、消息队列可以实现消息的随机查询,消息不一定要以先进先出的次序读取,也可以按照消息的类型读取原理消息队列常用API头文件#include#include#include函数
Li WanLiang
·
2023-09-07 04:26
Linux系统编程
linux
队列
c语言
编程语言
嵌入式
Linux下的
系统编程
——进程间的通信(九)
一、进程间通信常用方式IPC方式:Linux环境下,进程地址空间相互独立,每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到,所以进程和进程之间不能相互访问,要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信(IPC,InterProcessCommunication)。
我想学LINUX
·
2023-09-07 04:54
linux
IPC方式
管道
进程间通信
Linux系统编程
pipe函数
《Linux
系统编程
训练营》2_深入理解系统调用
揭示系统API的奥秘Linux系统架构应用程序运行之后得到用户进程模式切换的本质(系统调用的本质)系统模式切换依赖于CPU提供的工作方式一般来说,大部分CPU至少具有两种工作方式高特权级(Ring0):可以访问任意的数据,包括外围设备,比如网卡、硬盘等(内核模式)低特权级(Ring3):只能受限的访问内存,并且不允许访问外围设备,可被打断(用户模式)系统模式切换通过执行特殊的CPU指令发起(int
·
2023-09-06 22:45
linux
什么程度才算精通 Linux?
Linux
系统编程
的难点对于有一定Linux开发基础希望进阶学习Linux
系统编程
的开发人员来说,其难点在于
Linuxer_Martin
·
2023-09-06 19:20
linux
运维
服务器
Linux下的
系统编程
——系统调用(五)
前言:由操作系统实现并提供给外部应用程序的编程接口。(ApplicationProgrammingInterface,API)。系统调用就是应用程序同系统之间数据交互的桥梁。一、open/close函数1.open函数:(1)intopen(char*pathname,intflags)#include参数:pathname:欲打开的文件路径名flags:文件打开方式:#includeO_RDON
我想学LINUX
·
2023-09-06 13:40
linux
php
open函数
close函数
系统调用
Linux下的
系统编程
——进程(七)
前言:程序是指储存在外部存储(如硬盘)的一个可执行文件,而进程是指处于执行期间的程序,进程包括代码段(textsection)和数据段(datasection),除了代码段和数据段外,进程一般还包含打开的文件,要处理的信号和CPU上下文等等.下面让我们开始对Linux进程的学习吧目录一、进程的概念:1.程序与进程区别:2.并发:3.单道程序设计:4.多道程序设计:5.CPU和MMU:6.进程控制块
我想学LINUX
·
2023-09-06 13:40
linux
进程概念
进程控制
进程共享
环境变量
进程
fork
Linux下的
系统编程
——进程(八)
前言:程序是指储存在外部存储(如硬盘)的一个可执行文件,而进程是指处于执行期间的程序,进程包括代码段(textsection)和数据段(datasection),除了代码段和数据段外,进程一般还包含打开的文件,要处理的信号和CPU上下文等等.下面让我们开始对Linux进程的学习吧一、exec函数族将当前进程的.text、.data替换为所要加载的程序的.text、.data,然后让进程从新的.te
我想学LINUX
·
2023-09-06 13:08
linux
wait
waitpid
exec
孤儿进程
僵尸进程
回收子进程
上一页
8
9
10
11
12
13
14
15
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他