
c++系统编程(Linux)
文章平均质量分 81
本专栏开启c++系统编程(Linux)
包括一些基础操作
多线程 多进程 等
@陈一言
每一篇文章都保证高质量
展开
-
vim全键盘操作
1.命令模式(2.输入模式(3.底行命令模式(注:大部分指令,全部都是在命令模式下进行的(不是底行模式,也不是插入模式)原创 2023-06-09 20:14:42 · 2519 阅读 · 0 评论 -
C++实战-仿QQ项目终端版通信
管道设计:管道是半双工通信的,所以我们向两端相互通信的情况下,最好是设计两个管道,由于客户端向服务器端发送数据的时候,服务器端是统一个的,而且管道是队列结构的,所以所以客户端可以向同一个管道中写数据,服务器从这个管道中依次读数据就行。IPC通信的方式有很多种,我们选择一个相对简单的方式安吧。这里的协议不是网络中的协议,只是单纯的为了区别:登录、交流、不在线、退出等状态【客户端可能会出现的状态】客户端会有在线、退出的状态,而且相对来说是很频繁的操作,那么根据链表方便插入和删除操作,我们进行封装,方便传输。原创 2022-08-22 01:16:19 · 1901 阅读 · 1 评论 -
C++实战-Linux多线程(入门到精通)
1.进程间的信息难以共享。由于除去只读代码段外,父子进程并未共享内存,因此必须采用一些进程间通信方式,在进程间进行信息交换。2.调用fork()来创建进程的代价相对较高(复制一份地址空间),即便采用"写时复制"机制,仍然需要复制诸如内存页表和文件描述符表之类的多种进程属性,这意味着fork()调用在时间上的开销依然不菲3.线程之间能够方便、快速地共享信息,只需要将数据复制到共享(栈不行,见上图)变量中即可4.创建线程比创建进程通常要快10倍甚至更多。原创 2022-08-20 23:47:19 · 4594 阅读 · 1 评论 -
C/C++ 守护进程的创建
在创建守护进程之前,我们先把创建守护进程所涉及到的几个概念讲清楚然后带大家创建守护进程。原创 2022-08-16 23:35:11 · 1478 阅读 · 0 评论 -
C++项目实战-信号
信号的概念信号的共性使用信号的目的信号的机制信号的特质信号的状态信号的处理方式信号集未决信号集和阻塞信号集信号的编号信号4要素Linux常规信号说明(1-31)信号的产生终端按键产生信号硬件异常产生信号kill函数/命令产生信号软件条件产生信号信号集操作函数编辑信号集设定sigprocmask函数sigpending函数信号捕捉signal函数sigaction函数信号捕捉特性信号捕捉函数案例内..原创 2022-08-16 19:14:59 · 4170 阅读 · 1 评论 -
C++项目实战-多进程(一篇文章)
程序和进程的基本概念单道程序设计和多道程序设计并行和并发进程控制块PCB进程常用的命令环境变量环境变量操作函数原创 2022-08-14 17:49:40 · 13253 阅读 · 2 评论 -
常用的Linux系统的IO函数
前面我们说到,C库函数底层是调用了Linux系统函数的。而且在讲到虚拟地址空间的时候也说到,用户是不能够直接操作内核空间的,如果想要堆内核空间进行读写可以使用系统调用。系统调用其实就是调用一些系统api...原创 2022-08-06 21:52:37 · 780 阅读 · 0 评论 -
虚拟地址空间
提出了一种中间隔离的想法,也就是说添加一个中间层间接的去解决访问物理地址。按照这种方法,程序中访问的内存地址不再是实际的物理内存地址,而是一个虚拟地址。那如何去实现呢,通过MMU来映射(映射 f(x)=y)。对于每一个进程而言,我们只需要考虑其自己对应的虚拟地址即可,操作系统可以自动帮我们对应上相应的物理地址,操作系统完成映射关系,映射不同程序在不同的区域,实现了进程地址空间隔离。...原创 2022-08-06 14:29:23 · 604 阅读 · 0 评论 -
文件IO-缓冲区
比如现在有100个鸡蛋需要从A点运送到B点,在没有缓冲区的情况下只能一个一个的运送,而如果存在缓冲区,那么就相当于有一个框子,假设这个框子能装20个鸡蛋,当框子装满或者flush刷新或者A区的鸡蛋没有剩余了,则通过框子向B点运送鸡蛋。...原创 2022-08-06 13:20:26 · 443 阅读 · 0 评论 -
C++项目实战-makefile
一个工程中的源文件不计其数(一个项目有有很多的文件),现在的项目基本都是按模块进行划分的,而这些模块存放在若干目录中。makefile中定义了一系列的规则(这些规则定义了一系列如何编译程序的操作,比如哪些文件需要编译、哪些临时文件需要及时的清除等),如此以来我们只需要通过make命令就可以一键编译源程序了。所以常常说makefile带来的最大的好处就是"自动化编译",因为只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发效率。(以上用于可能不规范,是作者的理解)...原创 2022-08-04 00:10:23 · 2481 阅读 · 0 评论 -
C++项目实战-GCC编译
g //在生成的可执行程序中添加调试信息(需要GDB调试 Debug与relase版本)GCC是编译器套件,它可以编译多种语言,例如C/C++/Java/Go 可以在多个平台使用。-std //指定方言 -std = c99 -std = c++11。-shared //生成共享的目标文件(动态库)-fpic //生成与位置无关的代码(动态库)-Wall //生成所有的警告。-l //指定使用的库。-L //指定库的 路径。...原创 2022-08-03 16:47:31 · 563 阅读 · 0 评论