自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux网络编程—MAC地址、IP地址和端口

右边是主机位,用二进制数字 “0” 表示,0 的数目等于主机位的长度。这样做的目的是为了让掩码与 IP 地址做按位与运算时用 0 遮住原主机数,而不改变原网络段数字,而且很容易通过 0 的位数确定子网的主机数( 2 的主机位数次方 - 2,因为主机号全为 1 时表示该网络广播地址,全为 0 时表示该网络的网络号,这是两个特殊地址)。子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个 IP 地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。

2023-07-05 15:10:36 1080

原创 Linux网络编程—网络结构模式

C/S 一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强,一般高度机密的信息系统采用 C/S 结构适宜。B/S 结构(Browser/Server,浏览器/服务器模式),是 WEB 兴起后的一种网络结构模式,WEB。能充分发挥客户端 PC 的处理能力,很多工作可以在客户端处理后再提交给服务器,所以 C/S 结构。在C/S结构中,应用程序分为两部分:服务器部分和客户机部分。息与功能,执行后台服务,如控制共享数据库的操作等;

2023-07-05 15:07:46 114

原创 Linux多线程开发

一旦线程锁定互斥量,随即成为改互斥量的所有者,只有所有者才能给互斥量解锁。在对数据的读写操作中,更多的是读操作,写操作较少。(2)可能是生产者线程写入了一个数据之后,执行力多次消费者线程,多次读取数据,从而导致段错误。功能:分离一个线程。一般情况下,main函数所在的线程称为主线程,其余创建的线程称为子线程。尝试对信号量加锁,调用一次信号量的值减1,如果信号量大于0,则减1。对信号量加锁,调用一次,信号量的值减1,如果值为0,则阻塞一定时间。加锁(阻塞的,如果有一个线程加锁了,那么其他线程只能阻塞等待)

2023-07-04 17:21:16 120

原创 Linux多进程开发——守护进程

守护进程(精灵进程)时Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。没有控制终端确保了内核永远不会为守护进程自动生成任何控制信号以及终端相关的信号(如SIGINT、SIGQUIT)。Linux中大多数服务器就是用守护进程实现的。(1)生命周期很长,守护进程会在系统启动的时候被创建并一直运行直至系统被关闭。示例:写一个守护进程,每个2 s获取系统时间,将这个时间写入到磁盘文件中。进程组、会话操作函数。

2023-07-02 18:13:26 124 1

原创 C++11新特性——智能指针

然后我们又对str1,str2,str3的内容进行了修改:首先吧str1指向的内容修改为“none",就相当于把string对象的值从”Smart ptr"改成了“none",由于str1,str2,str3,str4指向的是同一个对象,因此*str1, *str2, *str3, *str4的值都变成了”none"(后面几次赋值同理)。时,str1的所有权会转移到str2,此时str1不在指向原本的string对象,那么,当它们的生命期结束时,释放的不再是同一片内存,自然就解决了内存重复释放的问题。

2023-07-02 16:22:36 379 1

原创 Linux多进程开发——进程间通信 共享内存

为引用这块共享内存,程序需要使用由shmat()调用返回的addr值,它是一个指向进程的虚拟地址空间中该共享内存段起点的指针。调用shmget()创建一个新的共享内存段或取得一个既有的共享内存段的标识符(即有其他进程创建的共享内存段)。功能:删除共享内存,共享内存要删除才会消失,创建共享内存的进程被销毁了对共享内存没有任何影响。​ 成功:返回共享内存的引用的ID(后面对共享内存的操作都是通过这个值来进行的)功能:创建一个新的共享内存段,或者获取一个既有的共享内存段标识。

2023-06-30 11:35:43 345

原创 Linux多进程开发——进程间通信 信号

由于另外有办法让系统忽略信号,所以一般情况下信号的阻塞只是暂时的,只是为了防止信号打断敏感的操作。​ -回调函数:这个函数是由内核调用的,程序员只负责写,定义捕捉到的信号如何处理信号。处于未决状态的信号是需要被处理的,在处理之前需要和另一个信号集(阻塞信号集)进行比较。信号集是一个用来管理和操作信号的数据结构,它是多个信号的集合,其系统数据结构类型为。信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号的产生。信号的”未决“是一种状态,指的是从信号的产生到信号被处理前的这一段时间。

2023-06-30 09:31:49 112

原创 Linux多进程开发——进程间通信 内存映射

可以通过open的时候O_CREAT一个新文件来创建映射区,但是创建的文件大小不能为0,否则会调用失败,可以用lseek或者truncate函数对新的文件进行扩展。-MAP_PRIVATE:不同步,内存映射区的数据改变了,对原来的文件不会修改,会重新创建一个新的文件(copy on write)-length:要释放的内存的大小,要和mmap函数中的length参数的值一样。内存映射是将磁盘文件的数据映射到内存,用户通过修改内存就能修改磁盘文件。-length:要映射的数据的长度,不能为0。

2023-06-28 21:17:04 114 1

原创 Linux多进程开发——进程间通信 有名管道

有名管道(FIFO)不同于匿名管道之处在于它提供了一个路径名与之相关联,以FIFO的文件形式存在于文件系统中,并且打开方式与打开一个普通文件是一样的,这样即使与FIFO的创建进程不存在亲缘关系的进程,只要访问该路径,就能彼此通过FIFO互相通信,因此,通过FIFO不相关的进程也能交换数据。与管道一样,FIFO也有一个读端和写端,并且从管道中读取数据的顺序与写入的顺序是一样的。为了克服这个缺点,提出了有名管道(FIFO),也叫命名管道,FIFO文件。FIFO有名字,不相关的进程可以通过打开有名管道进行通信。

2023-06-28 19:37:45 137 1

原创 Linux多进程编程——进程间通信 匿名管道

(2)如果有指向管道写端的文件描述符没有关闭(管道写端引用计数大于0),而持有管道写端的进程也没有往管道中写数据,这个时候有进程从管道中读取数据,那么管道中剩余的数据被读取后,再次read会阻塞,直到管道中有数据可以读了才会读取数据并返回。(4)如果有指向管道独断的文件描述符没有关闭(管道读端引用计数大于0),而持有管道独断的进程也没有从管道中读数据,这时有进程向管道中写数据,那么在管道被写满时再次write会被阻塞,直到管道中有空位置才能再次写入数据并返回。可以按照操作文件的方式对管道进行操作。

2023-06-28 19:34:10 110 1

原创 Linux多进程编程——进程控制

每当出现一个孤儿进程的时候,内核就把孤儿进程的父进程设置为init,而init进程会循环地wait()它的已经退出的子进程。系统的进程号时有限的,而僵尸进程的进程号不会被释放,那么,如果有大量僵尸进程,将因为没有可用的进程号而导致系统不能产生新的进程,此即僵尸进程的危害,应当避免。进程终止时,父进程尚未回收,子进程残留资源(PCB)仍存放在内核中,就会变成僵尸进程。功能:等待任意一个子进程结束,如果任意一个子进程结束,此函数会回收子进程的资源。waitpid函数可以设置不阻塞,还能指定等待哪个子进程结束。

2023-06-27 19:13:27 148

原创 Linux多进程开发——exec函数族

exec函数族的作用是根据指定的文件名找到可执行文件,并用它来取代调用进程的内容,换句话说,就是在调用进程内部执行一个可执行文件。exec函数族的函数执行成功后不会返回。因为调用进程的实体,包括代码段、数据段和堆栈等都已经被新的内容取代,只留下进程ID等一些表面上的信息。只有函数调用失败了,它们才会返回-1,从原程序的调用点从上往下执行。

2023-06-27 19:04:15 48

原创 Linux多进程开发

注意:fork之后父子进程共享文件,fork产生的子进程与父进程相同的文件描述符指向相同的文件表,引用计数增加,共享文件偏移指针。终止态:进程完成任务到达正常结束点,或出现无法克服的错误而异常终止,或被操作系统及有终止权的进程所终止时所处的状态。任何进程(除init进程)都是由另一个进程创建,该进程为被创建进程的父进程,对应的进程号称为父进程号(PPID)。系统允许一个进程创建新进程,新进程即为子进程,子进程还可以创建新的子进程,形成进程树结构模型。进程的状态反映进程执行过程的变化。

2023-06-27 18:01:51 207

原创 Linux多进程开发

(1)程序:程序是包含一系列信息的文件,这些信息描述了如何在运行时创建一个进程:二进制格式标识:每个程序文件都包含用于描述可执行文件格式的元信息。内核利用此信息来解释文件中的其他信息。机器语言指令:对程序算法进行编码。程序入口地址:表示程序开始执行时的起始指令位置。数据:程序文件包含的变量初始值和程序使用的字面变量值。符号表及重定位表:描述程序中函数和变量的位置及名称。这些表格有多重用途,其中包括调试和运行时的符号解析(动态链接)。

2023-06-27 14:13:23 71

原创 Linux系统编程入门

1、定义:GDB是由GNU软件系统社区提供的调试工具,同GCC配套组成了一套完整的开发环境,GDB是Linux和许多类Unix系统中的标准开发环境2、功能:(1)启动程序,可以按自定义的要求运行程序;(2)可以让程序在所指定的调置的断点处停住;(3)当程序被停住时,可以检查此时程序中所发生的事;(4)可以改变程序,将一个BUG产生的影响修正从而测试其他BUG。

2023-06-27 11:52:24 1198 1

软考-软件设计师学习笔记

第一章 计算机组成与体系结构

2023-04-02

空空如也

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

TA关注的人

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