- 博客(21)
- 收藏
- 关注
原创 关于使用vscode编译《Linux/unix系统编程手册》配套代码遇到的问题解决
在使用《Linux/unix系统编程手册》时遇到很多例程,因为我是使用vscode远程Linux虚拟机学习,所以这里只介绍vscode如何编译书籍配套例程,首先默认你已经配置好基本的编译环境。
2024-06-02 19:26:06 861
原创 c语言中进程内存空间分段(堆区、栈区、全局静态区、代码区、文字常量区)
全局静态区包含.bss段和.data段,即数据段,全局静态区储存的是由static修饰的变量(不管是全局还是局部都存放在全局静态区)和全局变量,静态区的分配是在编译阶段就已经确定,意思就是编译完后静态区内的数据就已经占据目标文件、可执行文件实际文件空间了,在程序一加载到内存中,进程运行之间就会在内存中创建,并且其生命周期是进程整个运行周期。
2024-01-26 02:49:55 2547 1
原创 STM32的DMA中FIFO和突发模式理解
配置突发为4节拍,这是确定一次突发的大小宽度是多少,假如接收端端口数据宽度配置为半字(2B)那么一次突发就是8B,切记一次突发不是一次传输,一次传输包含多次突发,突发本质上是指针增长,即接收端地址自增,每次传输由FIFO决定,FIFO如果选择的阈值为1/4,那么就是说FIFO每装满1个字,就触发传输,传输1个字,但是这里突发的最小单位为8B,而一次传输却是4B,肯定不行。按1/2阈值,满1/2传输一次,正好是2个突发包,那么就是传输一次突发两次,以此类推;上图就是stm32里面突发和FIFO配置的表。
2022-12-12 15:41:19 6574 9
原创 Linux系统编程06 --进程间关系
文章目录六、进程间关系终端**tty**网络终端进程组会话setsid()创建新会话函数getsid()获取会话sid函数守护进程守护进程创建步骤六、进程间关系终端 在UNIX系统中,用户通过终端登录系统后得到一个Shell进程,这个终端成为Shell进程的控制终端(Controlling Terminal),在讲进程时讲过,控制终端是保存在PCB中的信息,而我们知道fork会复制PCB中的信息,因此由Shell进程启动的其它进程的控制终端也是这个终端。默认情况下(没有重定向),每个进程的标准输
2022-03-19 12:59:25 527
原创 Linux系统编程05--信号2
文章目录五、信号-2进程处理信号的行为PCB信号集信号集处理函数sigprocmask信号屏蔽字函数sigpending获取当前信号集的未决信号集信号捕捉设定用户自定义信号(利用SIGUSR1和SIGUSR2实现父子进程同步输出)C标准库信号处理函数可重入函数信号引起的竞态和异步I/O时序竞态(进程竞争CPU资源)避免异步I/O的类型volatileSIGCHLD信号SIGCHLD信号产生条件向信号捕捉函数传参sigqueuesigaction中第二个函数原型信号中断系统调用五、信号-2进程处理信号的行
2022-03-16 16:43:54 2124
原创 Linux系统编程05--信号1
文章目录五、信号-1信号概念信号编号信号机制信号产生的方式、种类1.终端下特殊快捷键产生信号,发送给当前shell的前台进程。2.硬件异常3.kill函数或kill命令(函数发送信号方式)4.某种软件条件触发信号信号产生运原因五、信号-1信号概念信号编号查询Linux系统信号编号表(Linux提供64个信号种类)kill -l在当前学习Linux系统编程阶段,学习前32个信号,为Linux经典信号,后32个信号是实时信号,是硬件使用的信号。其实通过kill -l查询并没有64个信号,1-3
2022-03-16 16:36:41 1270
原创 Linux系统编程03--进程
三、进程文章目录三、进程虚拟内存空间进程环境1.环境变量getenv()/setenv():获取、设置环境变量值进程状态进程资源限制函数进程原语fork()进程相关函数getpid()getuid()getgid()exec()族wait()/waitpid()僵尸进程wait():waitpid()孤儿进程我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体。现在我们全面了解一下其中都有哪些信息。进程id。系统中每个进
2022-02-24 16:31:49 942
原创 Linux系统编程02--文件系统
二、文件系统文章目录二、文件系统ext2文件系统文件储存过程文件删除过程(rm)目录中记录项文件类型基于inode的函数stat()access()chmod()chown()utime()truncate()链接函数link()symlink()readlink()unlink()rename()chdir()getcwd()pathconf()目录操作mkdir()rmdir()opendir()readdir()rewinddir()telldir()seekdir()closedir()递归遍历目
2022-02-24 16:20:33 438
原创 Linux系统编程01--文件I/O
一、文件I/O进程控制块PCB内核管控进程通过pcb模块进行管控,PCB叫做进程控制块,操作系统把每一个进程当中一个PCB模块去管理,pcb是系统抽象出来的东西,方便管理进程。进程与程序:程序,代码存放在磁盘中,没有运行,称为程序。进程,程序运行起来,则系统为程序开辟内存空间(32位为4G虚拟内存),运行在内存中的程序为进程。操作系统为了方便管理进程,抽象出来PCB模块,每一个进程都有一个PCB模块(在内核中),PCB内含有该进程的信息数据结构。PCB即一个结构体—>struct t
2022-02-24 16:09:27 428
原创 Linux系统编程00--静态库与共享库
静态库与共享库静态库,.a结尾制作静态库:将.o文件制作成静态库文件ar rcs libmylib.a file1.orcs表示创建索引库名libmylib.a,一般以lib开头再加自己定的库名,后缀.a表示这是一个静态库名。ar rcs libmylib.a a.o b.o c.o相当于把a.o b.o c.o三个文件打包到一个库里面,库名叫libmylib.a在使用gcc时,要注意其参数的顺序,-l是链接器查看静态库里面有哪些目标文件用指令nm 静态库名(如libmylib.
2022-02-24 16:03:55 512
原创 Linux系统编程00--vim操作
vim操作在终端内创建新标签:ctrl + shift + t,切换标签alt + n(1,2,3,4)创建新终端:ctrl + shift + nvi三种模式:命令模式,vim刚进去的模式为命令模式插入模式(编辑模式),在命令模式下按i,I,a,A末行模式,命令模式下按:(shift + ;)即冒号模式插入模式和末行模式推出到命令模式都用esc键,插入和末行之间不可转换。esc键在任何模式下都可以回到命令模式。1.插入模式进入插入模式:i:插入光标前一个字符I:插入行首a:插入
2022-02-24 15:59:45 403
原创 Linux系统编程00--文件传输
文件传输1.ftp&nfs搭建ftp环境:1.安装:sudo apt-get install vsftpd2.配置vsftpd.conf文件sudo vim /etc/vsftpd.confanonymous_enable=YES 允许匿名用户访问anon_root=/home/jiaojian/ftp 定义根目录,共享目录no_anon_password=YESwrite_enable=YESanon_upload_enable=YESanon_mkdir_wri
2022-02-24 15:57:25 380
原创 C语言-->运算符、表达式和语句-->疑难问题:类型转换(运算表达式)
疑难问题:类型转换类型转换有两种:隐式,自动类型转换显示,强制类型转换区别,在于显示使用强制转换运算符进行转换,是有种醒目方便的类型转换方式,隐式转换则是遵循一定规则,在表达式或者语句中解决类型不匹配的问题的解决形式。表达式中的类型转换按照功能具体划分的话,分为升级和降级(粗略划分,主要讲的是在表达式中),比如int–>char是降级,int–>float为升级,他们的级别顺序依次由高到低为:long double、double、float、unsigned long long、
2021-12-23 19:48:49 617
原创 Linux学习06---shell基础
shell就是命令解释器,也是一种编程语言,它的作用是与内核沟通,建立应用与内核的交流桥梁,形象的成为内核的壳(shell)shell 分类Boirne shellshkshBashpshzshC shellcshtcshB shell 与 C shell语法完全不同,不兼容,Linux系统使用的标准shell是B shell家族中的Bash,它与sh(B sh)完全兼容。查看Linux支持的shell:[jiaojian@XYLJ stdio]$ vim /etc
2021-11-30 16:27:45 712
原创 Linux学习05---文件管理系统
文章目录分区与文件系统分区类型文件系统文件系统常见命令df 文件系统查看命令du 统计目录或文件大小命令fsck 文件系统修复命令dumpe2fs 显示磁盘状态命令挂载命令:mount挂载光盘与U盘卸载命令 umount挂载U盘支持NTFS文件系统fdisk分区创建分区格式化分区创建新建分区的挂载点分区自动挂载分区与文件系统分区类型主分区:一个系统总共最多有只能有4个主分区这是由于磁盘的结构决定的,因为磁盘分区是通过一个磁盘管理程序管理的,这个程序在磁盘最开始的那一段磁道
2021-11-18 23:09:38 1047
原创 Linux学习04---用户与用户组管理
文章目录用户配置文件用户信息文件 /etc/passwd影子文件/etc/shadow组信息文件/etc/group和组密码文件/etc/gshadow/etc/group/etc/gshadow用户管理的相关文件用户的家目录用户的邮箱用户模板目录用户管理命令useraddpasswdusermodchageuserdelidsu用户组管理命令groupaddgroupmodgroupdelgpasswd用户配置文件用户信息文件 /etc/passwd越是对服务器安全性要求高的服务器,越需要建立合理的
2021-11-16 17:41:47 3248
原创 Linux学习02---软件包管理
软件包管理软件包分类win的*.exe文件是不能在Linux里面直接使用的,所以win里面大量的病毒和木马到Linux里面就无效了,不可识别,对Linux来说win的软件包对他来说就是一堆文件而已。源码包(源代码直接开放给你的包,开源,绝大部分是C/C++写的)脚本安装包,一般是源码包经过二次开发的,类似于win里面软件安装包内的setup.exe,事先写好了安装引导程序,一步步的跟着点击按钮选择安装选项就ok了,在Linux里面就叫install.sh,其实其就是源码包。脚本安装使用
2021-11-07 22:07:28 1132
原创 Linux常见命令
Linux常见命令在Linux内,配置文件和shell脚本文件内的以#开头的行为注释行,#为注释符号。目录处理命令lsls [选项] [参数,目录绝对或相对]ls,list,列出对象文件夹内的文件-a,–all,表示列出目标目录内所有文件,包括隐藏文件-l,–long,表示列出详细信息-d,表示对象不是目录内的文件,而是表示对象是目录本身-h,人性化表示,即大小单位用M,G等人们常采用的单位-i,表示列出i节点编号mkdirmkdir [选项] [参数,目录]…可有多个参数ma
2021-11-05 12:14:03 1174
原创 解决github本地推送每次都需要输入用户密码问题
前言(废话):好久之前建了本地库,按照网上教程一步步傻瓜式的关联到网上GitHub用户,一套下来给我整蒙了,git是什么,要乌龟有啥用,本地仓库又是什么意思,也是云里雾里,它们之间的内在逻辑关系我到现在也不是很清楚,但是无所谓,只要好用就欧克,可是我搞好以后每次推送都需要输入用户名密码,很烦还要输入三次,人都晕了,导致我一段时间都没管控代码,今天一次性解决这个问题。首先,推送需要密码是因为开始关联本地git库和github时用的关联方式为HTTP方式,而不是ssh密钥方式,所有需要更改关联方式:这里不管
2021-10-20 16:23:56 1227
原创 关于KEIL5配置环境出现error: ‘cmsis_armcc_V6.h‘ file not found #include “cmsis_armcc_V6.h“问题解决办法
关于KEIL5配置环境出现error: ‘cmsis_armcc_V6.h’ file not found #include "cmsis_armcc_V6.h"问题解决办法题主在使用keil5学习stm32的时候,看的原子哥的视频。一步步配置keil5最后运行发现出现error: 'cmsis_armcc_V6.h' file not found #include "cmsis_armcc_V6.h"的报错信息,网上没找到解决方案。后面我经过反复看视频以及查看原子官方提供的代码发现是由于编译器的版本不
2021-10-14 15:43:37 5390 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人