自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 关于vmalloc和kmalloc的区别

vmalloc和kmalloc函数的区别

2023-02-27 13:57:50 503

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

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

2023-01-17 10:10:57 882

原创 struct file_operations

Linux struct_operations 函数用法讲解

2022-09-08 16:27:44 653

原创 Linux等待队列

Linux 等待队列函数简介

2022-09-07 23:34:10 332

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

修改linux最大pid

2022-06-07 15:30:00 1414

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

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

2022-06-02 16:03:12 866

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

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

2021-04-28 13:41:25 2241

原创 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 477

原创 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 911

原创 非数值类型数据表示

字符编码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 3108

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

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

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

原创 带符号数的表示

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

2020-07-21 17:02:24 270

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

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

2020-07-21 15:48:22 1456

原创 计算机的分类与应用

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

2020-07-20 12:41:46 432

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

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

2020-07-20 11:48:31 1071

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

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

2020-07-20 11:39:46 951

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

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

2020-07-20 10:33:07 120

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

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

2020-07-18 18:17:41 218

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

本文为转载https://www.cnblogs.com/porter/p/3611718.htmlC的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 234

转载 C语言中typedef的使用

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

2020-05-15 22:50:26 307

原创 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 169

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

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

2020-02-18 09:20:33 351

原创 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 388

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

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

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

原创 linux alarm()函数

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

2020-02-17 17:34:58 157

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

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

2020-02-17 16:50:36 666

原创 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 1461 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为内存映射区的地址,一般由内核指定一般传NULLlength为映射文件的大小,内核会根据length的大小将其修改为4...

2020-02-17 16:28:27 79

原创 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 171

原创 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 153

原创 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 143

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

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

2020-02-15 10:57:35 172

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

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

2020-02-13 08:51:47 1220

原创 Linux fcntl函数

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

2020-02-10 10:12:18 125

原创 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 177

原创 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 1929

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

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

2020-02-09 12:32:55 462

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

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

2020-02-09 12:28:31 784

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

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

2020-02-09 12:08:32 318

原创 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 125

空空如也

空空如也

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

TA关注的人

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