- 博客(22)
- 收藏
- 关注
原创 Ubuntu(Linux) 实现给文件开机自动加权限
要为/dev目录下的设备自动添加权限,可以创建一个udev规则文件。其中“99”代表着优先级,数字越小优先级越高。开机时对 ttyUSB0 赋予可读可写的权限。
2023-07-20 10:23:33
455
1
原创 LLDP 协议
链路层发现协议).它可以将本端的设备管理的地址 设备标识 接口标识等构成不同的TLV(Type/Length/Value,类型/长度/值)将其封装在LLDPDU(Link Layer Discovery Protocol Data Unit,链路层发现协议数据单元)中发给与自己直连的邻居,邻居收到这些信息后将其以标准MIB(Management Information Base,管理信息库)的形式保存起来,以供网络管理系统查询及判断链路的通信状况。
2023-06-26 19:56:32
2904
原创 Linux编译安装openssl 1.1.1s
我的pc系统版本是Ubuntu 22.04.1 LTS,默认安装的是OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)。但是种种原因需要安装1.1.1版本的。
2022-11-16 16:38:27
3505
1
原创 对称加密与非对称加密
但是对称加密的方式缺乏安全性,在两个终端通信之前首先要协商密钥,在协商密钥的过程中是使用明文传输的,很可能会被人截取到密钥,在之后的通信第三方可利用密钥轻松解密。方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。B:密文+自己私钥=原文;A:原文+B公钥=密文;A:密文+自己私钥=原文;B:原文+A公钥=密文;非对称加密:使用了一对密钥,公钥与私钥,所以。相比于对称加密安全一些,它使用了一对密钥,对称加密:因为使用同一密钥,所以。②密文+密钥=原文;
2022-10-24 10:08:31
184
原创 微机总线地址,物理地址,虚拟地址
地址总线 (Address Bus;又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。简单的说就是:cpu能访问的地址的范围32位的操作系统只能访问:0-2^32(大概4gb)查看32位树莓派内存大小:cat /proc/meminfo大约1gb在存储器里以字节为单位存储信息,为正确地存放或取得信息,每一个字节单元给以一个唯一的存储器地址,称为物理地址(Physical Address),又叫实际地址或绝对
2022-06-17 23:18:28
117
原创 树莓派驱动开发
为什么要进行驱动开发?有的平台没有所谓“wiringPi”库,为了驱动引脚需要编写自己的“wiringPi”库如何找到驱动?1:文件名2:设备号: Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。使用open系列打开。为了管理这些设备,系统为设备编了号①主设备号:区分不同种类的设备②次设备号:区分同一类型的多个设备查看设备号:ls -l 红圈是 主 黄圈是 次 用户进行open时linux进行系统调用的过程: 自己总结:用户调用open,open调用sy
2022-06-17 12:36:06
875
1
原创 TCP 三次握手 四次挥手
全称为(传输控制协议),是一种、、的传输层通信协议。TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。三次握手就是为了确定tcp通信双方都具有数据收发的能力。得到ACK响应则认为对方具有数据收发的能力,因此双方都要发送SYN确保对方具有通信的能力。第一次握手:客户端发送SYN,服务端接收,服务端得出客户端的发送能力和服务端的接收能力都正常第二次握手:服务端发送SYN+ACK,客户端接收,客户端得出客户端发送接收能力正常,服务端发送接收能力也都正常第三次握手:客户端发送ACK,服
2022-06-08 16:37:01
136
原创 Linux 网络编程
前面学习的进程间通信:管道、消息队列、共享内存、信号、信号量这5种通信方式都是依靠Liunx内核。他们的一个缺点就是,这些通信方式只能在单机运行。所以引入网络编程可以实现多机通讯网络的通讯 Linux与Android、IOS、各种单片机,或者是Android对Android等等。1.何为网络通讯:通过通信双方地址。地址由IP地址和端口号组成。①IP地址:负责定位主机。②端口号:负责定位主机上的特定应用(主机上有着多种协议)。端口号作用一台拥有IP地址的主机可以提供许多服务,比如Web服务、 FTP
2022-06-08 13:01:38
117
原创 进程通信 信号
1.信号的概述:每个信号都有一个名字和编号,这些名字都以“SIG”开头,例如“SIGIINT”、“SIGUP”等等。信号定义在signal.h头文件中,信号名都定义为正整数。具体的信号名称可以 使用kill -l来查看信号 的名字以及序号,信号是 从1开始编号的,不存在0号信号。kill对于信号0有特殊的应用。2.信号的处理(3种情况):①忽略信号:大多数信号可以使用这个方式来处理,但是有两种信号不能被忽略(分别是 SIGKILL和SIGSTOP)。因为他们向内核和超级用户提供了进程终止和停止的可靠
2022-06-07 16:04:34
75
原创 Linux进程间通信(管道,FIFO,消息队列,信号量,共享内存)
进程间通信:简称ipc(Inter-Process Communication)。进程间通信是指两个进程的数据之间产生交互。一.无名管道(pipe)1.特点:①半双工(即数据只能在一个方向上流动),具有固定的写端和读端②只能用于父子进程或兄弟进程之间③可以把它当做是一个文件使用read等函数操作,但它不是普通文件,并不属于其他文件系统,只存于内存中。 2.原型:1. #include <unistd.h>2. Int pipe(int fd[2]); //返回值,
2022-06-07 10:07:56
312
原创 popen的使用
作用:用于执行程序将执行结果返回到一个文件流中注意:使用完必须用pclose关闭,不然会产生僵尸进程原型:FILE *popen(const char *command, const char *type);command:要执行的命令/程序type:只能是r(只读)或者w(只写)的一种,因为popen会创建一个pipe管道去处理上代码:执行 ls -l 并把它放在ret.txt里面#include <stdio.h>#include <st.
2022-05-28 03:33:35
184
原创 exec族函数
介绍:exec函数族提供了一个在进程中启动另一个程序执行的方法。它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件原型:#include <unistd.h>extern char **environ;int execl(const char *path, const char *arg,
2022-05-28 02:47:24
46
原创 进程和线程的区别
基本概念:进程:进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程包含了表示进程内执行环境必须的信息,其中包括进程中表示线程
2022-05-28 00:09:59
81
原创 Linux多线程编程
一.线程是啥介绍:典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。进程是程序执行时的一个实例,进程本身不是基本运行单位,而是线程的容器。总结:进程——资源分配的最小单位,线程——程序执行的最小单位二.pthread库使用多线程开发在 Linux 平台上已经有成熟的 pthread 库支持,多线程开发的最基本概念主要包含三点:1.线程(三种):①创
2022-05-27 02:55:55
148
原创 Linux进程
一.进程概念1.什么是程序,什么是进程,有什么区别?程序是一个静态的概念 gcc xxx.c -o pro 磁盘中生成的pro文件叫做程序进程是程序的一次运行活动,也就是说程序运行起来了就是一个进程2.如何查看系统中有哪些进程?①用ps -aux指令查看所有进程用ps -aux|grep xxx 来查看指定进程名②使用top指令来查看,类似于windows的任务管理器3.什么是进程标识符?每个进程都有一个非负整数表示的唯一id,叫做pid。(每次程序执行的时候,操作系统都会重新
2022-05-25 01:21:52
70
原创 fopen和open的区别
Open和fopen的区别1. 来源从来源的角度看,两者能很好的区分开,这也是两者最显而易见的区别:open是UNIX系统调用函数(包括LINUX等),返回的是文件描述符(File Descriptor),它是文件在文件描述符表里的索引。 fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。PS:从来源来看,两者是有千丝万缕的联系的,毕竟C语言的库函数还是需要调用系统API实现的。2. 移植性这一点从上面的来...
2022-05-24 05:20:31
63
原创 Linux文件编程fopen系列函数
函数原形:FILE *fopen(const char *path, const char *mode);size_t fwrite(void *ptr, size_t size, size_t nmemb, FILE *stream);//size元素大小,nmemb元素个数size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);int fseek(FILE *stream, long offset, int when
2022-05-24 05:18:19
330
原创 Linux文件编程open系列函数使用
函数原形:int open(const char *pathname, int flags);// 两个参数int open(const char *pathname, int flags, mode_t mode);//三个参数,一般用于打开并创建open 返回的值称为文件描述符(它的作用域是当前进程,失败时返回-1)pathname 是一个指向文件路径的指针flags 文件权限:O_RDONLY 只读打开O_WRONLY 只写打开O_RDWR 可读可写打开O_C
2022-05-24 04:46:04
183
原创 Linux内核结构/shell是啥
参考(有详细图):https://blog.csdn.net/cyh20001027/article/details/123654192由用户级,内核级,硬件级组成用户级:应用程序:调用函数库,或者直接调用系统调用接口库函数:提供了应用程序支配内核干活的接口内核级:Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信。1.进程调度(Process Scheduler):控制多个进程对CPU的访问,使得多个进程能在CPU中微观串行运行,看起来却像是
2022-05-22 16:44:14
87
原创 linux的文件系统
一. 什么是文件系统?常规认知: 根目录 文件系统是操作系统用于明确存储设备组织文件的方法。 以上说的方法:就是文件管理系统(程序),简称文件系统二. 文件系统(文件管理系统的方法)的种类有哪些? FAT VFAT NTFS EXT1/2/3/4 HFS .... 树莓派查看文件系统的命令: df -T vfat : boot(bootloader, kernel) ...
2022-05-22 16:14:19
119
原创 树莓派内核开发
一.树莓派等芯片带操作系统的启动过程1.X86,Intel windows 启动过程: 电源 -》BIOS -》windows内核-》C,D盘-》 程序启动(QQ)2.嵌入式产品: 树莓派,mini2440, mini6410,nanopi,海思,RK(瑞芯微)------人脸识别打卡器,智能家居主控。。。 启动过程: 电源-》BootLoader(引导操作系统启动)-》Linux内核-》文件系统(根据功能性来组织文件夹,带访问权限)-》KTV点歌机,...
2022-05-21 00:17:53
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人