自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Linux系统编程】守护进程

在了解守护进程之前,需要先知道什么是什么是终端?什么是作业?什么是进程组?什么是会话?

2022-10-23 16:03:24 308

原创 回调函数(结合Linux信号机制)

如果一个函数作为另一个函数的参数传入,这种函数就可以称为回调函数(这句话并不严谨,但为了说明问题可以这么理解)。C语言里面,一般就是一个函数的参数列表中有函数指针,函数指针指向的函数就是一个回调函数。

2022-10-23 16:00:16 1130

原创 【Linux系统编程】命名管道与共享内存

共享内存是最快的IPC形式,是系统在内存中开辟一块内存,用于进程之间共享地进行操作。这片内存区域经过页表映射到通信进程各自的地址空间中,不同的进程可以通过操作自己的地址空间,来操作共享内存。

2022-10-23 15:56:37 601

原创 【Linux系统编程】进程通信之管道

管道是Unix中最古老的进程间通信方式,我们把从一个进程连接到另一个进程的数据流叫做管道。在Linux中,| 符号被用来代表管道。因为在Linux中,不同的命令,如ps,ls,grep等命令的本质都是可执行程序,| 前面的命令前面的命令通常会输出大量的结果,这些结果将会交由 | 后面的命令继续处理。

2022-10-23 15:48:54 617

原创 【Linux系统编程】Linux常见命令

文章目录01. ls02.pwd03.cd04.touch05.mkdir06.rm07.cp08.mv09.cat、more、less10.head 和tail11.date12.cal13.find -name14.grep15.useradd、 userdel -r16.su -、 sudo17.zip、unzip18.chmod19.chown20.chgrp01. ls指令用于显示该目录下的子文件ls -a:显示目录下的所有文件(包括隐藏文件)ls -l :显示目录下的文件的详细信息ls

2021-08-24 21:12:27 413 8

原创 【Linux系统编程】文件IO与文件系统

前言在学习C语言时,我们接触过如fopen、fclose、fseek、fgets、fputs、fread、fwrite等函数,实际上,这些函数是对于底层系统调用的封装。C默认会打开三个输入输出流,分别是stdin,stdout,stderr。执行man stdin后,会展示如下描述: #include <stdio.h> extern FILE *stdin; extern FILE *stdout; extern FILE *stderr;可以看到,这三个流类型都是

2021-08-22 23:51:24 524 15

原创 【Linux系统编程】进程创建、终止、等待、替换

1.进程创建在上一节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建一个新进程。那么,系统是如何创建一个新进程的呢?这就需要我们更深入的剖析fork函数。1.1 fork函数的返回值调用fork创建进程时,原进程为父进程,新进程为子进程。运行man fork后,我们可以看到如下信息:#include <unistd.h>pid_t fork(void);fork函数有两个返回值,子进程中返回0,父进程返回子进程pid,如果创建失败则返回-1。实际上,当我们调用fork

2021-08-16 01:35:53 775 5

原创 【Linux系统编程】进程基本概念与进程地址空间

文章目录1. 什么是进程?2. 用什么来描述进程?3. PID、PPID4. fork函数5. 进程的状态6. 进程地址空间6.1 mm_struct6.2 写时拷贝6.3 为什么要有进程地址空间?6.3 为什么要有进程地址空间?1. 什么是进程?在了解进程概念之前,我们需要先知道程序的概念。程序,是指编译好的二进制文件,这些文件在磁盘上,并不占用系统资源。进程,指的是一个程序的执行实例,是操作系统分配系统资源的单位,这里的系统资源有CPU时间,内存等。当程序运行起来,产生一个进程。也就是说,相比

2021-08-14 19:39:18 373 2

原创 C++构造函数

1 构造函数的定义及特征构造函数是类的一种特殊成员函数,其主要作用是对类的成员进行初始化,保证每个类成员都有一个合适的初始值。构造函数有以下特征:函数名与类名一致没有返回值对象实例化时自动调用对应的构造函数支持函数重载构造函数语法:类名(){}需要注意的是, 没有返回值和返回值为空是两码事。返回值为空指的是该函数有返回值,其中返回值为void类型。而支持重载则说明,在一个类中,可以同时存在多个构造函数。在代码段1中,People类提供了两个构造函数,其中第一个是无参构造函数,第二个是有

2021-08-04 16:08:56 7996 2

原创 指针数组与数组指针

指针数组指针数组是一个存放指针的数组,即数组中的元素类型均为指针类型。如 int* arr1[10];*和[ ]的优先级,[ ]比 *高,因此arr先与[ ]结合,表示其为一个数组,前面的int*表示该数组中存储的元素类型为int*,即数组中的元素类型为整型指针变量。数组指针与指针数组完全不同,数组指针是指向数组的一个指针。int (*p)[10]就是一个数组指针。这里p和*\结合,说明了p是一个指针变量。其指向的是一个大小为10的整形数组。1.数组的地址和数组首元素的地址在讲清楚数组指针之

2021-02-01 22:44:37 448

原创 C语言的隐式类型转换及整形提升

1.什么是隐式类型转换?在C语言的整型算术运算中,计算的最小单位为32位,即一个int字节的长度。即在计算过程中,表达式中的短整型和字符型要先被扩展为一个int型长度,再进行计算。例如:short int a, b, c;....a = b + c;该式在计算过程中,会先将b和c由16 bit扩展为一个整型长度,即32 bit,计算之后,取结果的低16位存储于a中。为什么会发生隐式类型转换?计算的过程都是在CPU内完成的,运算器ALU的操作数的字节长度就是int的字节长度。因为两个8 bi

2021-02-01 13:20:33 642

原创 扫雷游戏的C语言实现

1.设计思路扫雷游戏要着重考虑以下几点:雷盘的初始化、埋雷、扫雷、输入一个坐标,旁边没有雷的地方全部变为空地。我们设计两个二维数组,一个展示给玩家,一个则是程序员自己看到的真实埋雷情况。而程序员自己的雷盘,以字符0和1区分,0表示此时没有雷,1表示次数为雷。展示给玩家的雷盘,开始时全部都是以‘ * ’星号来展示,当玩家输入其中一个星号坐标时,若此时其周围有雷,则使用程序员的雷盘统计其周围雷的个数,若没有雷,则将其置为空,并且递归扩展空地。为了便于控制游戏难度,我们使用宏来定义数组大小。扫雷时,为了

2021-01-28 15:31:31 2228 3

原创 文件管理主要有那些功能?(文件管理概述)

文件管理讨论四点。第一点是文件内部的数据如何组织?无结构文件:二进制或数据流有结构文件:文件内的记录如何被组织?有结构文件分为顺序文件、索引文件和索引顺序文件。顺序文件的记录在物理上可以顺序存储也可以链式存储。如果是链式存储,无论是定长还是变长记录,都无法实现随机存取。如果是顺序存储,则需要讨论可变长记录和定长记录两种情况。可变长无法实现随机存取,而定长可以实现随机存取。同时,如果定长采用串结构,无法快速找到某个关键字对应的记录。而如果采用顺序结构,则可以快速找到某关键字对应的记录。顺序结构增删

2021-01-12 18:44:03 3184

原创 C语言基本数据类型的存储

学习C语言时,我对于C语言基本数据类型不太懂。后来学习计组之后,了解了计算机内部数据的存储。这篇文章将从底层,剖析基本数据类型在计算机中是如何存储。整型数据的表示方法在计算机中,数据以二进制的方式存储,即我们平时所使用的十进制数,都会被转化为0101等数据。如十进制的12,转化成二进制就是1010。我平时习惯将四个二进制数写在一起,第一,便于书写时一眼能看清位数;第二,也便于二进制与16进制的转换。比如十进制数99,我会先看成64+32+2+1,因此转换成二进制数的时候,就是0110 0011

2021-01-11 15:04:59 1646

空空如也

空空如也

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

TA关注的人

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