自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 共享内存的用法

Linux进程间通信(六):共享内存 shmget()、shmat()、shmdt()、shmctl()下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc()分配的内存一样。而如果某个

2021-12-08 14:33:15 1894

原创 C语言链表基本操作

1.链表概述  链表是一种常见的数据结构。它与常见的数组是不同的,使用数组时先要指定数组包含元素的个数,即为数组的长度,但是如果向这个数组中加入的元素超过了数组的大小时,便不能将内容全部保存。  链表这种存储方式,其元素个数是不受限定的,当进行添加元素的时候存储的个数就会随之改变。链表一般有两种形式,有空头链表和无空头链表。在链表中有一个头指针变量,这个指针变量保存一个地址,通过这个地址来找到这个链表,头指针节点指向第一个节点,在链表中每个节点包含两个部分:数据部分和指针部分。虽然结构体不能含有与本

2021-04-23 17:44:22 962

原创 进程间通信的七种方式

1、常见的通信方式管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个

2021-04-16 16:22:56 747

原创 2021-03-25

目录目录操作系统(os)必须完成的目标多用户系统特点用户和组进程进程和程序:几个进程能并发执行同一个程序,同一个进程能顺序的执行几个程序。单处理系统内核体系结构模块优点文件系统文件硬链接和软连接限制软连接(符号链接)文件类型文件描述符索引节点(inode)访问权限和文件模式文件操作的系统调用进程/内核模式激活内核例程进程的执行可重入内核进程地址空间同步和临界区非抢占式内核关中断信号量自旋锁(spin lock)避免死锁信号和进程间通信进程管

2021-03-25 21:24:44 185

原创 网络编程之select

为什么要使用select模型?答:解决基本C/S模型中,accept()、recv()、send()阻塞的问题select模型与C/S模型的不同点C/S模型中accept()会阻塞一直傻等socket来链接select模型只解决accept()傻等的问题,不解决recv(),send()执行阻塞问题其实select模型解决了实现多个客户端链接,与多个客户端分别通信两个模型都存在recv(),send()执行阻塞问题由于服务器端,客户端不需要(客户端只有一个socket,可以通过加线程解决同时r

2021-03-18 20:28:21 157

原创 用static声明的函数和变量小结

static 声明的变量在C语言中有两方面的特征:  1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。  2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips:  A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降低模块间的耦合度;  B.若全局变量仅由单个函数访问,则可以将这个变量改为该函数的静态局部变量,以降低模块间的耦合度;  C.设计和使

2021-01-28 20:48:52 440 2

原创 链表

Linux内核链表——看这一篇文章就够了本文从最基本的内核链表出发,引出初始化INIT_LIST_HEAD函数,然后介绍list_add,通过改变链表位置的问题引出list_for_each函数,然后为了获取容器结构地址,引出offsetof和container_of宏,并对内核链表设计原因作出了解释,一步步引导到list_for_each_entry,然后介绍list_del函数,通过在遍历时list_del链表的不安全行为,引出list_for_each_entry_safe函数,通过本文,我希望读者

2020-11-02 10:02:55 418

原创 C/C++常见面试知识点总结附面试真题

第一部分:计算机基础C/C++内存有哪几种类型?C中,内存分为5个区:堆(malloc)、栈(如局部变量、函数参数)、程序代码区(存放二进制代码)、全局/静态存储区(全局变量、static变量)和常量存储区(常量)。此外,C++中有自由存储区(new)一说。全局变量、static变量会初始化为零,而堆和栈上的变量是随机的,不确定的。堆和栈的区别?1).堆存放动态分配的对象——即那些在程序运行时分配的对象,比如局部变量,其生存期由程序控制;2).栈用来保存定义在函数内的非static对象,

2020-06-22 20:06:26 299

原创 Linux系统目录结构以及简单说明

Linux系统目录结构以及简单说明linux目录图:/root — 启动Linux时使用的一些核心文件。如操作系统内核、引导程序Grub等。home — 存储普通用户的个人文件ftp — 用户所有服务httpdsambauser1user2bin — 系统启动时需要的执行文件(二进制)sbin — 可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行proc — 虚拟,存在linux内核镜像;保存所有内核参数以及系统配置信息1 — 进程编号usr — 用户目

2020-06-16 14:07:38 168

原创 Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释

Linux 内核网络协议栈 ------sk_buff 结构体 以及 完全解释 (2.6.16)在2.6.24之后这个结构体有了较大的变化,此处先说一说2.6.16版本的sk_buff,以及解释一些问题。一、先直观的看一下这个结构体~~~~~~~~~~~~在下面解释每个字段的意义~struct sk_buff {/* These two members must be first. */struct sk_buff *next;struct sk_buff

2020-06-16 12:57:45 327

原创 区别KB与K

区别KB与Kvgg16 2018-04-19 15:08:19 2859 收藏 2分类专栏: others版权其实这个问题很简单,但很多人包括我在内,很长时间没有弄清楚,今天写一篇文章,总结一下,希望能帮到大家。首先要知道,K,M,G 都是数值(分别是指2^10, 2^20, 2^30);而B是1个字节(B,KB,MB, GB都是单位)1B=8bit1KB = 1024B = 1024 * 8bit (1KB:1024个字节,也就是2^10个字节,不是1个字节)1MB

2020-06-16 12:46:51 1675

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除