嵌入式的大菜鸟
码龄2年
关注
提问 私信
  • 博客:125,321
    125,321
    总访问量
  • 92
    原创
  • 26,517
    排名
  • 1,700
    粉丝

个人简介:心之所向,不慌不忙

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:安徽省
  • 加入CSDN时间: 2023-03-07
博客简介:

Liu1013216383的博客

查看详细资料
  • 原力等级
    当前等级
    4
    当前总分
    917
    当月
    6
个人成就
  • 获得1,046次点赞
  • 内容获得10次评论
  • 获得1,461次收藏
  • 代码片获得542次分享
  • 博客总排名26,517名
创作历程
  • 1篇
    2025年
  • 75篇
    2024年
  • 16篇
    2023年
成就勋章
TA的专栏
  • Linux
    11篇
  • 进程和线程
    16篇
  • 数据结构
    9篇
  • Linux操作系统
    7篇
  • Linux   C语言
    20篇
  • C学习笔记
    11篇
  • STM32学习
    13篇
  • STM32项目
    3篇
创作活动更多

『技术文档』写作方法征文挑战赛

在技术的浩瀚海洋中,一份优秀的技术文档宛如精准的航海图。它是知识传承的载体,是团队协作的桥梁,更是产品成功的幕后英雄。然而,打造这样一份出色的技术文档并非易事。你是否在为如何清晰阐释复杂技术而苦恼?是否纠结于文档结构与内容的完美融合?无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

55人参与 去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

问题:ubuntu22没有网络图标

解决方法:删除NetworkManager缓存文件,重启网络Q后问题就解决了(此版本的Ubuntu执行Network命令时,首字母要大写)问题原因:网络切换次数太多,Ubuntu啥啥分不清楚;问题:ubuntu22没有网络图标。
原创
发布博客 2025.03.15 ·
137 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

项目实战:基于Linux的Flappy bird游戏开发

Ncurses是最早的System V Release 4.0 (SVr4)中 curses的一个克隆和升级。这是一个可自由配置的库,完全兼容旧版本curses。Ncurses构成了一个工作在底层终端代码之上的封装,并向用户提供了一个灵活高效的API(Application Programming Interface 应用程序接口)。它提供了创建窗口界面,移动光标,产生颜色,处理键盘按键等功能。使程序员编写应用程序不需要关心那些底层的终端操作。简而言之,它是一个管理应用程序在字符终端显示的函数库。
原创
发布博客 2024.11.02 ·
1355 阅读 ·
12 点赞 ·
0 评论 ·
22 收藏

信号灯/信号量(semaphore)

如果至少有一个线程阻塞在该 sem上,表示有线程等待资源,信号量为 0,这时该函数保持信号量为 0 不变,并使某个阻塞在该 sem 上的线程从 sem_wait 函数中返回。释放资源,如果没有线程阻塞在该 sem 上,表示没有线程等待该资源,这时该函数就对信。获取资源,如果信号量为 0,表示这时没有相应资源空闲,那么调用线程就将挂起,直到有。参数:key:ftok 产生的 key 值(和信号灯关联的 key 值)SETVAL:设置信号灯的值,需要用到第四个参数:共用体。mode:文件权限。
原创
发布博客 2024.11.01 ·
935 阅读 ·
8 点赞 ·
0 评论 ·
15 收藏

深入探索共享内存

通过映射共享内存到各个进程的地址空间,进程可以直接访问共享数据,避免了复制和消息传递的开销,适用于需要高性能和低延迟的应用场景。:如果一个进程附加(attach)了共享内存但没有显式分离(detach),通常在进程终止时,操作系统会自动将共享内存从进程的地址空间中分离(detach),但不会删除共享内存本身。其他进程仍然可以访问这块共享内存。:主要是对实时数据传输的要求场合,在需要高实时性的系统中,如工业控制系统、航空航天系统,共享内存用于快速传输传感器数据、控制指令等,以实现及时的反应和处理。
原创
发布博客 2024.10.31 ·
873 阅读 ·
11 点赞 ·
0 评论 ·
9 收藏

消息队列的使用

cmd 要执行的操作 IPC_STAT / IPC_SET / IPC_RMID(删除)MSG_EXCEPT:与msgtype配合使用返回队列中第一个类型不为msgtype的消息。IPC_NOWAIT:如果没有返回条件的消息调用立即返回,此时错误码为ENOMSG。IPC_NOWAIT:当消息队列已满的时候,msgsnd函数不等待立即返回。1 消息结构必须有long类型的msg_type字段,表示消息的类型。msgtype>0:收到的第一条 msg_type类型的消息。
原创
发布博客 2024.10.31 ·
910 阅读 ·
16 点赞 ·
0 评论 ·
14 收藏

信号机制下(阻塞、信号集、信号驱动任务)

有时候不希望在接到信号时就立即停止当前执行,去处理信号,同时也不希望忽略该信号,而是延时一段时间去调用信号处理函数。信号的”阻塞“是一个开关动作,指的是阻止信号被处理,但不是阻止信号产生。SIG_BLOCK : 把参数set中的信号添加到信号屏蔽字中。SIG_UNBLOCK: 从信号屏蔽字中删除参数set中的信号。SIG_SETMASK: 把信号屏蔽字设置为参数set中的信号。首先,若oset是非空指针,那么进程的当前信号屏蔽字通过oset返回。
原创
发布博客 2024.10.31 ·
341 阅读 ·
3 点赞 ·
0 评论 ·
3 收藏

信号机制上(信号概念、发送、定时器、信号捕捉、SIGCHLD)

0:发送信号给跟调用kill函数的那个进程处于同一进程组的进程。< -1: 取绝对值,发送信号给该绝对值所对应的进程组的所有组员。sa_sigaction: 另一个信号处理函数,它有三个参数,可以获得关于信号的更详细的信息。SA_NODEFER:使对信号的屏蔽无效,即在信号处理函数执行期间仍能发出这个信号。= -1:发送信号给,有权限发送的所有进程。使用signal/sigaction 函数,把自定义的handle和指定的信号相关联。SA_RESTART:使被信号打断的系统调用自动重新发起。
原创
发布博客 2024.10.30 ·
879 阅读 ·
13 点赞 ·
0 评论 ·
18 收藏

共享内存(内存映射的使用、注意事项、进程间通信、systemV共享内存)

创建共享内存映射成功返回创建的映射区首地址,失败返回MAP_FAILED( ((void *) -1) ),设置errno值addr:指定要映射的内存地址,一般设置为 NULL 让操作系统自动选择合适的内存地址。length:必须>0。映射地址空间的字节数,它从被映射文件开头 offset 个字节开始算起。prot:指定共享内存的访问权限。可取如下几个值的可选:PROT_READ(可读), PROT_WRITE(可写), PROT_EXEC(可执行), PROT_NONE(不可访问)。
原创
发布博客 2024.10.30 ·
1056 阅读 ·
24 点赞 ·
0 评论 ·
8 收藏

有名管道和无名管道

4.对于以只写方式(O_WRONLY)打开的FIFO文件,如果open调用是阻塞的(即第二个参数为O_WRONLY),open调用将被阻塞,直到有一个进程以只读方式打开同一个FIFO文件为止;如果open调用是非阻塞的(即第二个参数为O_WRONLY | O_NONBLOCK),open总会立即返回,但如果没有其他进程以只读方式打开同一个FIFO文件,open调用将返回-1,并且FIFO也不会被打开。2.管道通信是单工的,一端读,一端写(程序实现设计好)。3. 管道已满,write阻塞。
原创
发布博客 2024.10.29 ·
625 阅读 ·
18 点赞 ·
0 评论 ·
14 收藏

线程池及gdb调试多线程

我们平时创建一个线程,完成某一个任务,等待线程的退出。但当需要创建大量的线程时,假设T1为创建线程时间,T2为在线程任务执行时间,T3为线程销毁时间,当 T1+T3 > T2,这时候就不划算了,使用线程池可以降低频繁创建和销毁线程所带来的开销,任务处理时间比较短的时候这个好处非常显著。概念:通俗的讲就是一个线程的池子,可以循环的完成任务的一组线程集合。2 线程池工作线程,它是任务队列任务的消费者,等待新任务的信号。1 任务队列,存储需要处理的任务,由工作线程来处理这些任务。判断是否有空闲的工作线程。
原创
发布博客 2024.10.29 ·
733 阅读 ·
11 点赞 ·
0 评论 ·
16 收藏

条件变量基本使用

2、如果pthread_cond_signal或者pthread_cond_broadcast 早于 pthread_cond_wait ,则有可能会丢失信号。1、pthread_cond_wait(&cond, &mutex),在没有资源等待是是先unlock 休眠,等资源到了,再lock。所以pthread_cond_wait he pthread_mutex_lock 必须配对使用。
原创
发布博客 2024.10.29 ·
379 阅读 ·
3 点赞 ·
0 评论 ·
7 收藏

线程的取消和互斥

在Linux中,互斥锁并不占用任何资源,因此LinuxThreads中的 pthread_mutex_destroy()除了检查锁状态以外(锁定状态则返回EBUSY)没有其他动作。写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;否则写者将等待,直到没有读者和写者。读写锁出于写锁状态时,所有试图对读写锁加锁的线程,不管是读者试图加读锁,还是写者试图加写锁,都会被阻塞。读写锁处于读锁状态时,有写者试图加写锁时,之后的其他线程的读锁请求会被阻塞,以避免写者长时间的不写锁。
原创
发布博客 2024.10.29 ·
418 阅读 ·
3 点赞 ·
0 评论 ·
6 收藏

线程的取消和清理

4.线程内的return 可以结束线程,也可以给pthread_join返回值,但不能触发pthread_cleanup_push里面的回调函数,所以我们结束线程尽量使用pthread_exit退出线程。2.pthread_cleanup_pop()被执行且参数为0,pthread_cleanup_push回调函数routine不会被执行.3.pthread_cleanup_push 和pthread_cleanup_pop可以写多对,routine执行顺序正好相反。输入命令bt(打印调用栈)
原创
发布博客 2024.10.29 ·
360 阅读 ·
4 点赞 ·
0 评论 ·
5 收藏

线程的回收及内存演示

*通过线程属性来设置游离态(分离态)*/int pthread_detach(pthread_t thread);–指定该状态,线程主动与主控线程断开关系。注意:pthread_join 是阻塞函数,如果回收的线程没有结束,则一直等待。错误类型:参数不匹配,期望的是char * ,但参数retv是void *解决:在参数前面加强制类型转换(char*)retv。错误可能:1拼写错误,2对应的头文件没有包含。错误类型:未知的类型pthead_t。
原创
发布博客 2024.10.29 ·
304 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

线程的创建和参数传递

意义:表示pthread_create参数3的定义和实际代码不符合,期望的是void * (*)(void *) ,实际的代码是int * (*)(char *)collect2: error: ld returned 1 exit status --------这个链接错误,使用多线程的好处:大大提高了任务切换的效率,避免了额外的TLB & cache的刷新。arg 传递给routine的参数 ,参数是void * ,注意传递参数格式,注意事项:1. 主进程的退出,它创建的线程也会退出。
原创
发布博客 2024.10.29 ·
980 阅读 ·
12 点赞 ·
0 评论 ·
5 收藏

exec函数族和进程

由于在 Linux 中,每一个系统与用户进行交流的界面称为终端,每一个从此终端开始运行的进程都会依附于这个终端,这个终端就称为这些进程的控制终端,当控制终端被关闭时,相应的进程都会自动关闭。参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息。1、背景:fork创建进程之后,子进程和父进程执行相同的代码,但是在实际开发当中,我们希望 ,父子进程执行不同的代码。成功:返回调用进程的会话ID;
原创
发布博客 2024.10.28 ·
588 阅读 ·
9 点赞 ·
0 评论 ·
15 收藏

进程的创建和回收

pid>0时,只等待进程ID等于pid的子进程,不管其它已经有多少子进程运行结束退出了,只要指定的子进程还没有结束,waitpid就会一直等下去。pid=0时,等待同一个进程组中的任何子进程,如果子进程已经加入了别的进程组,waitpid不会对它做任何理睬。pid=-1时,等待任何一个子进程退出,没有任何限制,此时waitpid和wait的作用一模一样。pid
原创
发布博客 2024.10.28 ·
889 阅读 ·
26 点赞 ·
0 评论 ·
21 收藏

目录操作和文件属性获取

使用文件描述符,要配合open函数使用DIR是用来描述一个打开的目录文件的结构体类型成功时返回目录流指针;出错时返回NULL。
原创
发布博客 2024.10.28 ·
1132 阅读 ·
11 点赞 ·
0 评论 ·
10 收藏

文件IO(概念、打开、读、写、关闭)

什么是,又称系统IO,系统调用是操作系统提供的API接口函数。POSIX接口 (了解)可移植操作系统接口注意:文件IO不提供缓冲机制文件IO的API英文:缩写fd(file descriptor)文件描述符是一个非负整数。是0-1023的数字,表示文件。
原创
发布博客 2024.10.28 ·
1024 阅读 ·
24 点赞 ·
0 评论 ·
23 收藏

流刷新定位

成功时返回0;出错时返回EOF将流缓冲区中的数据写入实际的文件Linux下只能刷新输出缓冲区,输入缓冲区丢弃如果输出到屏幕使用fflush(stdout)
原创
发布博客 2024.10.28 ·
1057 阅读 ·
18 点赞 ·
0 评论 ·
18 收藏
加载更多