自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 共享内存mmap

功能:创建共享内存映射函数返回值:成功返回创建的映射区首地址,失败返回 MAP_FAILED(((void *) -1)) ,设置errno值。

2024-02-20 21:01:22 2055

原创 有名管道和无名管道

写端没有全部被关闭,read 阻塞等待 (不久的将来可能有数据递达,此时会让出。① 管道读端全部被关闭,进程异常终止(也可使用捕捉 SIGPIPE 信号,使进程不终。管道写端被全部关闭,read 返回 0(好像读到文件末尾)管道未满,write 将数据写入,并返回实际写入的字节数。管道已满,write 阻塞(管道大小64K)无名管道创建时会返回两个文件描述符,分别用于读写管道。2. 管道通信是单工的,一端读,一端写(程序实现设计好之后)1. 只能用于亲缘关系的进程间通信(父子进程,兄弟进程)

2024-02-19 20:17:58 936

原创 条件变量和线程池

但当需要创建大量线程时,假设 T1 为创建线程的时间,T2 为在线程任务执行时间,T3 为线程销毁时间,当 T1 + T3 > T2,这时候就不划算了,使用线程池可以降低频繁创建和销毁线程所带来的开销,任务处理时间比较短的时候这个好处非常显著。3. pthread_cond_sigal 信号会被多个线程收到,这就是线程的惊群效应。② 线程池工作线程,它是任务队列任务的消费,等待新任务的信号。1. 概念:通俗的讲就是一个线程的池子,可以循环完成任务的一组线程集合。必要性:为了实现等待某个资源,让线程休眠。

2024-02-18 16:17:53 769

原创 数据结构-链表

定义了一个名为data的字段,其类型为data_t;:定义了一个名为next的指针字段,该指针指向与当前结构体相同类型的下一个结构体listnote是的别名linklist是一个指向的指针的别名。

2024-02-13 14:16:39 847 1

原创 线程的取消和互斥

2.pthread_cleanup_pop() 被执行参数为0,pthread_cleanup_push() 回调参数routine 不。3.pthread_cleanup_push() 和pthread_cleanup_pop() 可以多对使用,顺序正好相反(如。写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;读写锁处于写锁状态时,所有试图对读写锁加锁的线程,不管是读者试图加读锁,还是。读写锁处于读锁状态时,有写者试图加写锁时,之后的其他线程的读锁请求会被阻塞,

2024-02-05 18:53:25 1109

原创 线程的创建和回收

createP.c:(.text+0x52):对‘pthread_create’未定义的引用。pthread_t pthread_self(void) 查看自己的TID。pthread_join 是阻塞函数,如果回收的线程没有结束则一直等待。对于一个默认属性的线程A来说,线程占用的资源并不会因为执行结束而得到释放。2.通过pthread_create函数的第一个参数获取(如第21行)1.通过在线程里面调用pthread_self()函数(如第7行)2.主进程的退出,它创建的线程也会退出。

2024-02-03 18:14:34 1072 1

原创 exec函数族和守护进程

stdin / stdout / stderr (标准输入0,标准输出1,标准错误2)控制终端:每个会话可以有一个单独的控制终端,与控制终端连接的Leader(组长)就是。进程组:进程集合,每个进程组有一个组长,其进程ID就是该进程组ID。会话:进程组集合,每个会话有一个组长,其进程ID就是该会话组ID。(用命令行创建)创建守护进程:nohup ./文件名 &(用命令行创建)创建后台进程:./文件名 &子进程调用exec函数族。(用命令行创建)创建前台进程:./文件名。

2024-01-30 22:12:34 2068 2

原创 进程的创建和回收

用户存放程序临时创建的局部变量,但不包含static修饰的变量(在数据段中)。用于存放进程运行中被动态分配的内存段,当进程调用malloc等函数分配内存时,新分。配的内存就被动态添加到堆上,当利用free等函数释放内存时,被释放的内存从堆中被剔除。在shell下启动,可以在前台运,也可以在后台运行。外,在函数被调用时,其参数也会被压入被发起调用的进程栈中,并且待到调用结束后,函。父子进程执行顺序是由操作系用决定的,是随机的;数的返回值也会被存放回栈中,可以把栈看作是一个寄存,交换临时数据的内存区。

2024-01-28 11:37:26 668

原创 静态库和动态库

或者使用 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH :你的动态库目录添加在~/2.没有main函数的.c文件不能生成可执行文件。gcc -o 目标文件 源码.c -L 路径 -lxxxx。gcc -o 目标文件 源码.c -L 路径 -lxxxx。注意:1.静态库名字要以lib开头,后缀名为 .a。含义:可执行文件所使用的动态库文件找不到。1.编写库文件代码,编译为.o目标文件。-L 表示库所在的路径。查看可执行文件的动态库。执行动态库的可执行文件错误。

2024-01-26 17:24:01 225 1

原创 流刷新定位,格式化输入输出

#include int fflush(FILE *fp) 成功时返回0;出错时返回EOF(-1) 将流缓冲区中的内容写入实际的文件 Linux下只能刷新输出缓存区,输入缓存区丢弃 #include long ftell (FILE *stream); long fseek(FILE *stream , long offset , int whence);

2024-01-23 11:15:54 512 1

原创 二进制读写

存储的格式不同:文本文件只能存储文本。

2024-01-14 18:54:56 540 1

原创 标准IO 按行输入输出

读取整个行char *gets(char *s) //读取内容存放的缓存区的指针//同上 ,读取的大小 ,读取的位置指定size =3,实际输入的是两个字符,还包括 '\0'指定size = 10,实际输入的是5个,因为结束的时候总会加一个回车,所以保存的会多加一个回车成功时返回s,到文件末尾或出错时NULLgets不推荐使用,容易造成缓冲区溢出遇到 ' \n'或输入size-1个字符时返回,总是包含 ‘ \0’注意事项:gets函数已经淘汰,因为会导致缓冲区溢出。

2024-01-13 19:39:52 529 1

原创 标准IO的输入输出

头文件: #include 三个函数//函数//宏//只能读取标准输入的内容(键盘),不能读取文件成功时返回读取的指针;若到文件末尾或出错时返回EOF(-1)getchar()等同于fgetc(stdin) //stdin也是FILE * 的指针,是系统定义好的,指向的是标准输入(键盘输入)getc和fgetc区别是一个是宏一个是函数注意:函数的返回值是int类型,不是char类型,主要是为了扩展返回值的范围打开文件后读取是从文件开头,读完一个之后读写指针会后移。

2024-01-13 17:01:06 339 1

原创 C语言内存管理

C/C++定义了四个内存区间:代码区:存放自己写的代码全局变量与静态变量区:全局:定义在main函数之前的变量 静态:static修饰的变量局部变量区即栈区:定义在函数内的变量动态存储区即堆区:如下静态存储分配通常定义变量,编译器在编译时都可以该变量的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但。

2024-01-09 21:54:40 324

原创 C语言结构体,共用体及typedef

union 共用体名成员表列;char b;union gy n;// a,b成员共用的内存 只有四个字节n.b ='b';//如果b进行改变 那么a的值也会改变return 0;共用体中改变其中一个,另外的也会随之改变共用体嵌套结构体访问用n.f.c ...在C语言中,允许使用关键字typedef定义新的数据类型。

2024-01-09 19:19:13 919

原创 C语言 函数

函数是一个完成特定功能的代码模块,其程序代码独立,通常要求有返回值,也可以是空值一般形式为: (){语句序列;return [()];是整个函数的返回值类型return[()]语句中表达式的值,要和函数的保持一致,如无返回值应写成void型是逗号“,”分隔的多个变量的说明形式大括号{},称为函数体;是大于等于零个语句构成的函数的说明就是指函数原型。

2024-01-07 19:11:11 436 1

原创 const变量

int const * const r = &a //r不能改 *r也不能改 只能给初始值 后期不可以改。const * [= ];常量化指针目标是限制通过指针改变其目标的值,但指针变量存储的地址值可以修改。//*p不能改 p可以改。//q可以改 *q不能改。变量由const修饰时,若想使用指针间接访问变量,指针也要由const修饰。const 变量名 =[];常量化变量的值是为了使得变量的值不能修改。

2024-01-06 16:34:57 342 1

原创 字符指针与字符串,指针数组,多级指针

存储类型> * []int * p =&m;指针数组是指由若干个具有相同存储类型和数据类型的指针变量构成的集合。 * *;而把指向一级指针变量的指针变量成为二级指针变量,简称二级指针。对于指向处理数据的指针变量成为一级指针变量,简称一级指针。指针数组名表示的是该指针数组的起始地址。例如:double * pa[2];定义:把一个指向指针变量的指针变量成为多级指针变量。字符串常量不可以修改。

2024-01-05 19:14:59 354 1

原创 C语言指针

在C语言中内存单元的地址称为指针,专门用来存放地址的变量,成为指针变量。

2024-01-04 15:59:37 1529 1

原创 文件系统相关命令

查看路径 查看文件信息 切换目录 创建文件 复制 移动 删除 查看文件x3 新建文件夹 删除文件夹 (按顺序)利用Linux中为每个文件配置的物理编号——inode建立链接,因此,硬链接不能跨越文件系统。利用文件的路径名建立链接,通常使用绝对路径而不是相对路径,以最大限度增加可移植性。硬链接:ln + 文件名 + 需要链接的文件。软链接:ln -s 目标文件 + 链接文件。

2023-12-03 11:00:17 50 1

原创 Linux用户管理

设置初始口令使用passwd命令可以修改用户口令root用户可以修改任何用户的口令语法:passwd [-k] [-l] [u] [-f] [-d] [-S] username使用方法:passwd username修改用户属性usermod删除用户添加用户组。

2023-11-30 14:37:24 35

原创 shell基本维护命令

使用man命令可以找到特定的联机帮助页,并提供简短的命令说明,一般语法格式为:man + 命令,使用PageUp和PageDown翻页,使用“:q”退出页面。单独使用su命令,默认为要转换为超级用户root,下面命令实例临时获取超级用户 root权限。SEE ALSO:列出联机帮助页中与该命令直接相关成功能相近的其他命令。用于临时改变用户身份,具有其他用户的权限,用exit命令切换。命令格式为:su [-c | -m - ] username。BUGS:解释命令或其输出中存在的任何已知的问题或缺陷。

2023-11-28 20:55:55 234

原创 shell基本命令

Linux中的shell就是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互。sudo shutdown -h now 立即关机sudo shutdown -r now 立即重启sudo reboot now 立即重启sudo shutdown -h +60 六十分钟后关机sudo shutdow -r +45 四十五分钟后重启。

2023-11-28 15:05:40 169

原创 挑战从零45天入职嵌入式DAY2

只要程序没结束,他就不会随着说明它的程序的结束而消失,下次调用该函数,该存储类型的变量不再重新说明,而且还保留上次的值。static变量成为静态存储类型的变量,既可以在函数体内,也可在函数体外说明(默认是0)当变量在一个文件中的函数体外说明,说明其他文件中的函数或程序段都可引用这个变量。a >>= b 等价于 a = a >> b;a

2023-11-25 17:41:29 127

原创 挑战从零45天入职嵌入式DAY1

register称为寄存器型,register变量是将变量放入CPU的寄存器中,可以加快程序的运行速度,但是容量是有限制的,不能用“&”来获取register变量的地址。auto说明的变量只能在某个程序范围内使用,通常在函数体内或函数中的复合语句里,说明auto存储类型的变量可以省略关键字auto。定义一个宏定义以后,可以在其他宏定义中使用。还是10+(1+1)*20=50呢。#define 所以建议上面都加括号。好处:增加了代码的可读性和可维护性。由字母,数字,下划线组成。

2023-11-22 21:09:36 42

空空如也

空空如也

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

TA关注的人

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