自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

嵌入式

嵌入式爱好者!

  • 博客(810)
  • 资源 (8)
  • 论坛 (1)

原创 awk基础

文本处理工具 awk命令格式awk [options] -f awk-script-line filename options: -F:定义输入字段分隔符,默认的分隔符是空格或者制表符(tab) command: BEGIN{} {} END{} 行处理前 行处理 行处理后awk 'BEGIN{print 1+1} {print "demo"} END{print "end....."}' passwd

2020-10-15 16:32:00 10

原创 chattr 设置重要的文件不可以删除

sudo chattr +i a.c rm a.c # fail sudo rm -rf a.c # fail sudo chattr -i a.c rm a.c # ok

2020-10-15 11:15:53 13

原创 Linux下操作小技巧

vim打开文件,替换文件中的内容将IP地址114.114.114.114替换为114.114.114.200\1为一个占位,等价于前面小括号中的内容:%s/\(114.114.114.\)114/\1200/

2020-10-13 09:14:29 33 1

原创 Linux中C验证线程的几种退出方式

/* 验证线程的几种退出方式 */#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string.h>#include <pthread.h>void* myfunc(void* arg){ printf("child pthre

2020-10-12 10:47:56 9

原创 shell中shift使用

#!/bin/shwhile [ $# -ne 0 ]do let num+=$1 shift 2doneecho "num : ${num}"测试结果

2020-10-12 10:09:23 8

原创 shell函数中数组传递参数

#!/bin/sharray=(1 2 3 4 5)echo "${array[@]}"func_demo(){ value=0# for i in "$@" for i in $* do let value+=$i done echo $value}func_demo ${array[@]} #数组所有元素的值echo "1111111111111"func_demo ${array[*]}测试结果...

2020-10-12 09:51:20 8

原创 shell实现并发检查某个网段IP

#!/bin/sh> ip.txtfor i in {1..255}do { ip=192.168.8.$i ping -c4 -W1 $ip >&/dev/null if [ $? -eq 0 ];then echo "$ip" | tee -a ip.txt fi }&donewaitecho "ok"

2020-10-09 14:34:55 4

原创 shell命令行传递参数

shell命令行传递参数及其校验#!/bin/shif [ $# -eq 0 ];then echo "usage: `basename $0` filename" exit 1fiif [ ! -d $1 ];then echo "error file type" exit 2fifor dir in `ls $1`do echo "$dir"doneshell重新定义分隔符#希望for处理文件按照回车分隔,而不是空格或者tab#重新定义分隔符#IFS内部字段分隔符

2020-10-09 14:33:23 4

原创 shell实现变量的替换

string/old/newunset urlurl=www.github.com.cnecho ${url/github/sina}变量的替代${变量名-新的变量值}如果变量没有被赋值,会使用新的变量值替换;如果变量有被赋值,包括空值,不会被替代。${变量名:-新的变量值}如果变量没有被赋值,包括空值,会使用新的变量值替换;如果变量有被赋值,不会被替代。...

2020-09-30 13:17:06 15

原创 shell的索引及切片

var:start:end

2020-09-30 13:02:20 16

原创 shell中变量内容的删除

# 从前向后匹配## 从前向后匹配,贪婪匹配% 从后向前匹配%% 从后向前匹配,贪婪匹配

2020-09-30 12:15:48 22

原创 shell中的算术运算使用

exprexpr 1 + 3num1=10num2=20expr $num1 + $num2C语言方式echo $((3 + 4))方括号[ ]echo $[5 + 3]let命令let sum=1+1echo $sum

2020-09-30 09:23:55 6

原创 shell中的死循环示例

#! /bin/bash for (( ; ; )) #死循环do echo "+++" sleep 1 echo "---"done测试结果

2020-09-28 16:47:20 11

原创 shell中的特殊符号使用() ``

显示当前系统/的剩余空间df -h | grep '/$' | awk '{ printf $4 }'()等价于 ``

2020-09-28 09:29:34 13

原创 C实现itoa函数的的一种方式

#include <stdio.h>#include <string.h>#include <stdlib.h>void my_toupper(char * str){ while(*str != '\0') { if((*str >= 'a') && (*str <= 'z')) *str += 'A' - 'a'; str++; } retur

2020-09-27 16:19:50 19

原创 C实现DNS到IP地址的实现

#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include <netdb.h>#include <arpa/inet.h>#include <sys/socket.h>int dns2ip(const char *domain, char * ip, int len){ char **pptr

2020-09-27 13:16:06 10

原创 virtual box 报错VT-x is not available (VERR_VMX_NO_VMX)解决办法

前提是以前用着虚拟机没有问题,突然出现这个问题的解决办法。首先BIOS需要打开VT-x的支持。保存信息VT-x is not available (VERR_VMX_NO_VMX). 返回 代码: E_FAIL (0x80004005) 组件: ConsoleWrap 界面: IConsole {872da645-4a9b-1727-bee2-5585105b9eed}解决1、管理员身份打开cmd2、bcdedit 并回车,找到hypervisorlaunchtype选项发现为auto3、b

2020-09-25 10:22:47 47

原创 sqlite数据库操作

数据库是在数据库管理系统管理和控制之下,存放在存储介质上的数据集合。sqlite数据库:是一种小型的关系型轻量级的嵌入式数据库。支持数据库大小至2TB;足够小,全部源码大致3万行c代码,250KB,比目前流行的大多数数据库对数据的操作要快。1-- 安装数据库: sudo dpkg -i *.deb2-- 创建数据库 sqlite3 stu.db //不存在则创建并打开 存在打开3-- sqlite命令 系统命令 以 "."开头 普通命令 ,

2020-09-25 09:08:17 9

原创 UDP模型流程及其函数

服务器创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in将套接字与服务器网络信息结构体绑定 bind( )进行通信 recvfrom( )/sendto( )客户端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in进行通信 sendto( )/recvfrom( )函数sendto( )#include <sys/socket.h>ssize_t sendto(int socket, const void *mes

2020-09-24 13:26:58 11

原创 socket网络编程TCP中C/S架构函数框架

服务器端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in将套接字与服务器网络信息结构体绑定 bind( )将套接字设置为被动监听状态 listen( )阻塞等待客户端的连接请求 accept( )进行通信 recv( )/send( )客户端创建套接字 socket( )填充服务器网络信息结构体 sockaddr_in发送客户端的连接请求 connect( )进行通信 send( )/recv( )socket( ) #include <s

2020-09-24 13:22:20 7

原创 测试当前主机的大小端存储的方法

1、使用共用体#include <stdio.h>//使用共用体测试主机字节序union un{ int a; char b;};int main(int argc, const char *argv[]){ union un myun; myun.a = 0x12345678; printf("a = %#x\n", myun.a); printf(...

2020-09-24 13:17:57 131

原创 网络中IP地址分类

IP地址是Internet中主机的唯一标识Internet中的主机要与别的机器通信必须具有一个IP地址IP地址为32位(IPv4)或者128位(IPv6)每个数据包都必须携带目的IP地址和源IP地址,路由器依靠此信息为数据包选择路由IPV4地址的表示形式:点分十进制 如192.168.1.123 最后都会转换为一个32位的无符号整数。IP地址分类(依据ipv4地址的前八位来分)A类 0000 0000 - 0111 1111 0.x.x.x - 127.x.x.xB类 1000 0000

2020-09-24 13:09:38 10

原创 unix本地套接字

本地地址结构struct sockaddr_un // <sys/un.h> { sa_family_t sun_family; char sun_path[108]; // 套接字文件的路径};填充地址结构struct sockaddr_un myaddr;bzero(&myaddr, sizeof(myaddr));myaddr.sun_family = PF_UNIX; strcpy(myaddr.sun_path, “

2020-09-24 10:47:30 14

原创 组播

过多的广播会大量占用网络带宽,造成广在这里插入代码片播风暴,影响正常的通信。A类地址第1字节为网络地址,其他3个字节为主机地址。第1字节的最高位固定为01.0.0.1 – 126.255.255.255B类地址 第1字节和第2字节是网络地址,其他2个字节是主机地址。第1字节的前两位固定为10128.0.0.1 – 191.255.255.255C类地址前3个字节是网络地址,最后1个字节是主机地址。第1字节的前3位固定为110192.0.0.1 – 223.255.255.255

2020-09-24 10:36:36 10

原创 广播

只有用户数据报(使用UDP协议)套接字才能广播以192.168.1.0 (255.255.255.0) 网段为例,最大的主机地址192.168.1.255代表该网段的广播地址发到该地址的数据包被所有的主机接收255.255.255.255在所有网段中都代表广播地址发送:创建用户数据报套接字缺省创建的套接字不允许广播数据包,需要设置属性setsockopt可以设置套接字属性接收方地址指定为广播地址指定端口信息发送数据包...

2020-09-24 10:29:21 16

原创 网络超时检测

超时检测的必要性:避免进程在没有数据时无限制地阻塞,当设定的时间到时,进程从原操作返回继续运行。方法一: 设置套接字属性 方法二: 设置select最后的一个参数:注意select调用后会清零超时结构体,需要重新设置时间方法三:使用闹钟定时器 #include <signal.h> int sigaction(int signum, const struct sigaction *act, struct sigaction

2020-09-24 10:26:32 21

原创 套接字属性函数getsockopt和setsockopt

套接字属性函数int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen)功能: 获得套接字属性参数: sockfd:套接字描述符 level:协议层 1)SOL_SOCKET:通用套接字选项. 2)IPPROTO_IP:IP选项. 3)IPPROTO_TCP:TCP选项. optname:选项名 SO_BROADCAST     允许发送广

2020-09-24 10:22:42 11

原创 网络服务器分类

循环服务器cp循环服务器:被一个客户端占用 用的少udp循环服务器:可以被多个客户端响应 用的多并发服务器:tcp并发服务器:可以响应多个客户端请求 用的多udp并发服务器:可以响应多个客户端请求 用的少tcp并发服务器------>多进程并发服务器 多线程并发服务器 IO多路复用实现并发服务器(伪并发)并发服务器的设计思想是:服务器接受客户端的连接请求后创建子进程来为客户端服务...

2020-09-24 10:11:26 13

原创 IO多路复用

基本思想先构造一张有关描述符的表,然后调用一个函数。当这些文件描述符中的一个或多个已准备好进行I/O时函数才返回。函数返回时告诉进程那个描述符已就绪,可以进行I/O操作。 #include <sys/time.h> #include <sys/types.h> #include <unistd.h>int select(int nfds, fd_set *readfds, fd_set *writefds, fd

2020-09-24 09:04:37 10

原创 Windows子系统的安装与使用(几乎可以抛弃虚拟机了)

硬件环境笔记本或者台式机 win10系统有的没有下面的Linux 子系统,所以也就无法安装,解决办法至今没有。安装步骤控制面板开启支持Linux子系统按照提示需要重启 OSWindows应用商店搜索ubuntu18获取后安装Ubuntu18.04安装完成,可以愉快地使用了。...

2020-09-23 21:10:54 34

原创 网络常用调试工具使用

## ifconfig 查看网络的配置信息ifconfig eth0 查看网卡1网络的配置信息## ping 查看两台主机之间的连通性ping www.baidu.com //加域名ping 192.168.1.31 //加ip地址## lsof 查看打开的文件(应用程序)lsof -i tcp //查看tcplsof -i udp //查看udp## telnet 作为客户端测试服务器telnet ip port## netstat 测试网络状态net

2020-09-23 17:04:10 19

原创 UDP通信流程

server: 创建数据报套接字(socket(,SOCK_DGRAM,))--------------------->有手机 指定本地的网络信息------------------------------------------->有号吗 绑定网络信息(bind())--------------------------------------->绑定手机 接收信息(recvfrom())---------------------------------------

2020-09-23 16:51:48 14

原创 inet_addr和inet_ntoa函数使用

#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#if 0#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>typedef uint32_t in_addr_t;struct in_addr {

2020-09-23 16:35:12 39

原创 fcntl改变文件状态标志

可以用fcntl改变文件状态标志,改变文件为非阻塞状态。1、获取文件的flags,即open函数的第二个参数: flags = fcntl(fd,F_GETFL,0);2、设置文件的flags: fcntl(fd,F_SETFL,flags);3、增加文件的某个flags,比如文件是阻塞的,想设置成非阻塞: flags = fcntl(fd,F_GETFL,0); flags |= O_NONBLOCK; fcntl(fd,F_SE

2020-09-23 16:00:02 13

原创 单向链表操作

#include <stdlib.h>#include <string.h>#include <stdio.h>typedef struct Node{ int data; struct Node *next;}SLIST;SLIST *SList_Create(){ SLIST *pHead, *pM, *pCur; int data; //创建头节点 并初始化 pHead = (SLIST *)malloc(sizeof(SLIST)

2020-09-23 11:38:29 3

原创 SD卡速度测试

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <fcntl.h>#include <sys/ioctl.h>#include <time.h>#include <sys/time.h>#define MAX_FILE_NAME_LEN (1024)#defin

2020-09-23 11:38:19 14

原创 选择法和插入法排序框架

#include <stdio.h>#include <stdlib.h>/*-------------------- 排序规则 -------------------- 它的工作原理是每一次从待排序的数据元素中选出 最小(或最大)的一个元素,存放在序列的起始位 置,直到全部待排序的数据元素排完。 稳定性:选择排序是不稳定的排序方法 如:[5,5,3]-------------------------------------------------*/

2020-09-23 11:38:11 3

原创 C中strlen函数寄存器内实现

#include <stdio.h>int main(int argc, const char *argv[]){ char *str = "87a8dfs4dsfdjskl\ afdsjklsadfjkl;kjassfdjklasdfkl\ djfffffffffffffffffffffffffdfdj\ dfjasdddddddddddddddddddddddddd\ djas;lkeafidjfdkadsjadfsfd

2020-09-23 11:37:59 3

原创 C实现椭圆效果

#include <stdio.h>#include <math.h>#define N 2.6int main(){ float x; float y; float r = 20; int i; for (x = -r; x <= r; x++) { y = sqrt(r*r - x*x) * N; for (i = 0; i < r*N - y; i++) putchar(' '); for (i = 0; i < y

2020-09-23 11:37:41 1

原创 C实现快速排序算法实现

#include <stdio.h>void QuickSort(int * a, int low, int high);int FindPos(int * a, int low, int high);void QuickSort(int * a, int low, int high){ int pos; if (low < high) { pos = FindPos(a, low, high); QuickSort(a, low, pos-1); Quic

2020-09-22 10:23:26 9

source_list.zip

树莓派镜像源文件,是清华的镜像源,实测可以使用,将文件覆盖到对应的位置即可。

2019-10-30

linux驱动书籍

该压缩包内为一本linux驱动书籍,一共23章,貌似和宋宝华的linux驱动书籍相似,可以参考下载!!

2019-04-11

宋宝华linux驱动视频

该文档为宋宝华linux驱动视频,总共有13节,需要学习的可以下载学习一下!如果连接失效请留言与我联系

2019-04-08

宋宝华LINUX驱动书籍前言部分

宋宝华LINUX驱动书籍前言部分,为宋宝华linux驱动书籍的介绍,摘取的前言目录部分。

2019-04-08

ximnd操作基础

该文件为.xmind格式文件,介绍了xmind软件的基本使用技巧,和我的博客的内容一致,博客内容是从该文件导出成图片格式的。欢迎下载学习!!!!

2019-03-31

qt_c++源码

这是一个入门级别的QT测试代码,在别人的基础上做了简单的修改,供参考学习

2019-02-27

google插件

使用的是一些常用的google浏览器插件,还是比较全的插件!

2018-10-26

pyqt5第一章

最新版本的pyqt的第一章资料,内有如何搭建pyqt5环境的说明!

2018-10-18

zxy131072的留言板

发表于 2020-01-02 最后回复 2020-01-02

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