自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 关于vmalloc和kmalloc的区别

vmalloc和kmalloc函数的区别

2023-02-27 13:57:50 725

原创 关于原子操作、自旋锁、信号量、互斥体的使用场景和注意事项

原子操作、自旋锁、信号量、互斥体

2023-01-17 10:10:57 1651

原创 struct file_operations

Linux struct_operations 函数用法讲解

2022-09-08 16:27:44 814

原创 Linux等待队列

Linux 等待队列函数简介

2022-09-07 23:34:10 462

原创 修改linux最大进程(线程)数

修改linux最大pid

2022-06-07 15:30:00 1751

原创 解决c linux popen 只能获取stdout 无法获取 stderr

解决c linux popen 只能获取stdout 无法获取 stderr

2022-06-02 16:03:12 1249

原创 解决linux fedora 33安装百度网盘后点击图标没有反映的问题

下载文件后执行baidunetdisk-install.sh文件 在执行文件之前,先确保之前安装的百度网盘已经卸载完。 有什么问题请留言 链接: https://pan.baidu.com/s/1pVOSlOj0PsfajIRU6CcSTA 密码: nwhg

2021-04-28 13:41:25 2889

原创 typedef 与 指针

定义两个指针变量: int *a,*b; 需要两个*号 typedef int* INT; INT a,b; 此时不需要*号 const INT a 相当于int * const a,相当于a是常量,a存储的地址值不可改变。若想要a指向的值不可改变,可以进行以下操作: typedef const int* INT; INT a,b; 相当于 const int *a,*b; ...

2020-08-28 19:18:15 615

原创 BCD码

BCD码就是用四位二进制码表示10个十进制数。 BCD码分为有权码和无权码 有权码: 8421码、5421码、2421码 最常用的就是8421码,8421码从高到低每一位的权值分别为8,4,2,1,也就是当每一位都是1时,分别表示十进制的8,4,2,1。5421码和2421码以此类推。 四位8421码可以表示的十进制的数的范围为0-15,从中选择前10种组合(0000-1001)来表示0-9。 无权码 格雷码、余三码、余三循环码 余三码:余三码是在8421的基础上加上3(0011)形成的一种无权码。 ..

2020-07-31 14:16:59 1298

原创 非数值类型数据表示

字符编码ASCII码 目前,国际上普遍采用的一种字符系统是7位二进制编码的ASCII码。 在ASCII码中,编码值0~31为控制字符,用于通信控制或设备的功能控制,编码127是DEL码,编码值32是空格sp,编码值32-126共95个字符为可印刷字符。48-57为0-9的ASCII码,取掉ASCII码48-57的二进制形式的前三位,剩下的恰好是0-9的二进制表示。 汉字的表示和编码 在1981年的国家标准GB2312-1980中,每个编码用两个字节表示,共收录了汉字和符号7445个字。 最新的汉字国家标准是

2020-07-30 15:30:23 3293

原创 定点数和浮点数的表示

计算机中常用的数据表示格式有两种,一种是定点格式,二是浮点格式。定点数和浮点数的意思是,小数点的位置是固定的还是浮动的。一般来说定点格式能表示的数值范围有限,单要求处理的硬件简单一些。浮点格式能表示的数的范围很大,但要求处理的硬件比较复杂一些。 定点数: 所谓定点格式,是指小数点位置是固定不变的。定点数的表示方式有两种。 第一种是:(定点小数 用于表示纯小数) 小数点固定在符号位和数值位之间 第二种是:(定点整数 用于表示纯整数) 小数点固定数值后面 浮点数: 小数点的位置由阶码规定,因此是浮动的,用来

2020-07-29 20:44:36 3445 4

原创 带符号数的表示

真值:用正负号表示正负的数叫真值 机器数:用0,1表示正负的数叫机器数 在计算机中,数据是用机器数表示的,其表示原理要用原码、反码、补码来讲解 原码: 原码就是一个数的绝对值的二进制表示形式,二进制的最高位是符号位,0表示正数,1表示负数。 反码: 正数的反码就是其原码本身。 负数的反码就是其原码除了最高位(符号位),其余位按位取反。 补码: 正数的补码就是原码本身。 负数的补码是其反码+1 ...

2020-07-21 17:02:24 385

原创 进位计数制及其相互转换

进位计数制 我们日常用的数制通常是十进制,逢十进一。计算机中通常用二进制、八进制、十六进制。 基数:在进位制计数法中,每个数位所用到的不同数码的个数成为基数,如:十进制的数用0~9表示,所以十进制的基数为10。 位权:一个进位数的大小通常是每个数码乘以与之对应的位权,然后相加,如二进制的101中0的位权就是2的一次方 数制的相互转换 BCD码的geshi ...

2020-07-21 15:48:22 1611

原创 计算机的分类与应用

计算机分为巨型计算机、大型计算机、小型计算机、微型计算机(PC机)、嵌入式计算机(手机、平板、计算器等)

2020-07-20 12:41:46 630

原创 主存、辅存、内存、外存、缓存、随机存储、只读存储的关系

内存又叫主存,外存又叫辅存 主存包括随机存储器(随机存储器集成到电路板上就成了内存条),只读存储器,缓存(包括一级缓存、二级缓存、三级缓存)

2020-07-20 11:48:31 1329

原创 计算机的特点和性能指标

计算机的特点 运算速度快 能自动执行程序 存储能力强 运算精度高 通用性好 计算机的性能指标 基本字长(一般指CPU中参加一次定点运算的操作位数,如:32位,64位。基本运算影响着计算的精度,硬件成本,甚至对指令系统功能也有影响) 外频(外频也称外部频率、基频、系统时钟频率。是指主板上振荡器输出的频率,也是计算机中一切硬件工作的基准时钟信号,它经过倍频系数放大之后用做计算机中各部件的工作频率) CPU的运算速度 CPU主频(GHz),CPU主频是指CPU内核的工作频率,主频=外频*倍频系数

2020-07-20 11:39:46 1165

原创 计算机系统的软件系统

计算机系统的软件系统组成 计算机系统由系统软件和应用软件组成 系统软件 操作系统 程序设计语言 数据库管理系统 应用软件 游戏软件 图像处理软件 办公软件 等等

2020-07-20 10:33:07 211

原创 计算机系统的硬件组成

一、绪论 计算机发展历史 计算机系统的硬件组成 计算机系统的软件系统 计算机系统的组织结构 计算机的特点和性能指标 计算机的分类与应用

2020-07-18 18:17:41 339

转载 史上最明白的 NULL、0、nullptr 区别分析

本文为转载https://www.cnblogs.com/porter/p/3611718.html C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL; foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #define NULL ((void *)0) 也就是说NULL实际上是一个void *的指针,然后吧void *指针赋值给int *和foo_t *的指针的时候,隐式转换成相应的类型。而如果换做一个C++编译器来编

2020-05-15 23:02:51 368

转载 C语言中typedef的使用

这篇文章是转载的,原文链接http://c.biancheng.net/view/228.html 写得不错 typedef应该算是很熟悉的关键字了,但是我也只是简单使用罢了,为了比较系统的讲述这一小节,特地上网搜了一下。 好了,现在正式开始讲解。 typedef关键字可以用于给数据类型定义一个别名,比如说你本名叫关谷神奇,我嫌弃这个名字太长了,所以给你取一个别名,叫关谷,以后我叫关谷的时候你就知道在叫你了。 当你定义了一个结构体时,每次创建一个结构体都要使用struct+结构体名的方式,而用了typede

2020-05-15 22:50:26 508

原创 linux signal()、sigaction()信号捕捉函数

signal()函数 signal()函数不是标准的函数,不一定在每个版本的linux系统下都能正常工作,sigaction是标准的linux函数 typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); signum参数 signum是要捕捉...

2020-02-18 11:51:45 274

原创 linux 信号集概念及其相关函数讲解

概念: 未决信号集:没有被当前进程处理的信号 阻塞信号集:将某个信号放到阻塞信号集,这个信号就不会被处理了。一般是人为的。阻塞解除,信号就变成递达状态,然后被处理 阻塞信号集和未决信号集存在于内核区的pcb中 阻塞信号集和未决信号集、自定义信号集的关系 信号被发送之后会先到达未决信号集,在处理之前要先查询阻塞信号的对应状态,如果为1,表示对应的未决信号应该阻塞,此时将不处理未决信号集。如果为0...

2020-02-18 09:20:33 479

原创 linux setitimer()函数详解

int setitimer(int which, const struct itimerval *new_value, struct itimerval *old_value); 参数解释: which参数 ITIMER_REAL自然定时法则,就和alarm中的一样;对应的信号为(SIGALRM) ITIMER_VIRTUAL只计算用户区代码运行的时间;对应的信号为(SIGVTA...

2020-02-17 21:39:19 543

原创 Linux 获取程序的正式运行时间、用户区运行时间、内核区运行时间,将输出结果重定向到文件

获取程序运行时间信息: 在执行程序的时候前面加time,比如执行time ./a.out 重定向输出内容 ./a.out >file 原本打印到屏幕上,重定向后会输出在file中

2020-02-17 17:46:09 358 1

原创 linux alarm()函数

unsigned int alarm(usigned int seconds); alarm函数会在指定的时间过了以后向自己发送14号信号SIGALARM,会导致进程终止。但是可以捕捉信号做自己的操作 alarm()函数返回上一个alarm()剩下的时间; ...

2020-02-17 17:34:58 236

原创 linux raise()函数给自己发信号;abort()函数给自己发送异常终止信号,并产生core文件

int raise(int sig); void abort(void);//自己给自己发送6号信号,SIGABRT

2020-02-17 16:50:36 778

原创 Linux kill()函数杀死指定进程

int kill(pid_t pid, int sig); pid取值: pid>0发送信号给指定进程 pid=0发送信号给自身所在的所有进程,包括自己也会被杀死 pid<-1发送信号给进程组id为|pid|的进程组,会杀死该进程组的所有进程; pid<-1发送信号给有权限发送的系统中的所有进程 ...

2020-02-17 16:41:06 1633 3

原创 Linux 内存映射

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset); int munmap(void *addr, size_t length); mmap参数 addr为内存映射区的地址,一般由内核指定一般传NULL length为映射文件的大小,内核会根据length的大小将其修改为4...

2020-02-17 16:28:27 188

原创 linux 读写锁

读写锁的适用场景:大量读操作,少量写操作; 读并行,读写互斥,写互斥; #include<stdio.h> #include<unistd.h> #include<stdlib.h> #include<pthread.h> #include<string.h> pthread_rwlock_t rwlock; int num=0; vo...

2020-02-16 15:45:11 244

原创 Linux互斥锁(互斥量)、线程分离

使用互斥锁实现线程同步时一般有四个步骤: 初始化互斥锁 //pthread_mutex_init() 加锁 //pthread_mutex_lock()、pthread_mutex_trylock 解锁 //pthread_nutex_unlock() 销毁锁 pthread_mutex_destroy() #include<stdio.h> #include<stdlib....

2020-02-16 11:12:54 244

原创 Linux 设置线程分离示例

#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h> #include<pthread.h> void* thread_func(void* arg) { int i=1; while(i<10) ...

2020-02-16 09:35:51 235

原创 linux进程间通信(IPC interProcess Communication)

进程间通信常用的四种方式 管道 信号 共享映射区 本地套接字 管道 (管道可以用fcntl设置非阻塞属性) Linux将管道视为一种特殊文件,因此可以使用问价接口来操作管道;但管道属于一种特殊文件,它没有数据块,只通过系统内存存放要传送的数据。管道中的数据只能由一端传送到另一端,因此管道被设计为环形的数据结构,如此既能实现管道的循环利用,又能方便内核对管道的管理。管道实质上是内上的一块缓冲区。...

2020-02-15 10:57:35 282

原创 Linux wait()、waitpid()实现进程同步

特殊进程 Linux系统中有两种特殊进程:僵尸进程、孤儿进程; 僵尸进程:当程序调用exit()函数后,该进程并不是马上就消失, 而是留下一个称为僵尸进程的数据结构。僵尸进程是一种特殊的 进程,他几乎放弃进程退出前占用的所有内存,既没有可执行代 码也不能被调度,只在进程列表中留下一个位置,记载进程退出 状态等信息供父进程收集。若父进程中没有回收子进程的代码, 子进程会一直处于僵尸状态。子进程退出后...

2020-02-13 08:51:47 1364

原创 Linux fcntl函数

fcntl()函数可以用来复制一个已经有了的文件描述符 int fd2=fcntl(fd,F_DUPFD); fcntl()函数可以用来获取文件状态标志 文件状态标志表示就相当于open()函数的第二个参数 int flag=fcntl(fd,F_FETFL); 设置文件状态标识 常用的几个可以修改的文件标识O_APPEND,O_NONBLOCK flag=flag|O_APPEND; fcn...

2020-02-10 10:12:18 205

原创 Linux dup、dup2复制文件描述符

#include<stdio.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/stat.h> #include<fcntl.h> int main() { char buf[20]="wwjwoaini!";...

2020-02-10 09:20:37 254

原创 linux opendir()、readdir()函数遍历目录,获取文件名和数量

#include<stdio.h> #include<stdlib.h> #include<sys/types.h> #include<dirent.h> #include<string.h> unsigned long long totle=0; unsigned long long getfile(char* path) { ...

2020-02-09 19:16:05 2129

原创 linux 用getcwd()函数获取当前进程的工作路径

char *getcwd(char *buf, size_t size); 获取的路径放进buf缓冲区里面,size为缓冲区的大小,返回值是指向buf的指针

2020-02-09 12:32:55 532

原创 Linux chdir切换进程当前工作目录

int chdir(const char *path); 在一个程序中使用这个函数,可以切换进程的当前工作路径

2020-02-09 12:28:31 903

原创 Linux truncate()函数修改文件大小

int truncate(const char *path, off_t length); path修改文件的路径 length文件的最终大小,比原来大,向后拓展,比原来小,删掉后边的部分

2020-02-09 12:08:32 442

原创 linux access()函数判断当前用户是否拥有wrx权限,文件是否存在

#include<stdio.h> #include<stdlib.h> #include<unistd.h> int main(int argc,char * argv[]) { int ret=access(argv[1],W_OK); if(ret==-1) { perror(...

2020-02-09 11:49:46 196

空空如也

空空如也

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

TA关注的人

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