- 博客(93)
- 问答 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 udp编程模型
功能:客户端字母,服务器将字母转化为大写,发送给客户端编译 1、gcc server.c -o ser -std=c99 2、gcc client.c -o cli 运行./ser 运行 ./cli 127.0.0.1server.c#include <stdio.h>#include <sys/type...
2019-05-27 23:21:36
211
原创 文件打开方式
文件打开方式 r:以只读的方式打开文本文件,文件必须存在; w:以只写的方式打开文本文件,文件若存在则清空文件内容从文件头部开始写,若不存在则根据文件名创建新文件并只写打开; a:以只写的方式打开文本文件,文件若存在则从文件尾部以追加的方式开始写,文件原来存在的内容不会清除(除了文件尾标志EOF),若不存在则根据文件名创建新文件并只写打开; r+:以可读写的方式打开文本文件,文件必须存在; w+:以可读写的方式打开文本文件,其他与w一样; a+:以可读写的方式...
2021-04-23 16:49:31
4915
原创 fputc 与fputs函数
1)int fputc(int ch,FILE *fp);功能:向指定文件写入一个字符参数: ch:字符 fp:文件指针返回值: 成功:返回写入的字符 失败:返回EOF 2)int fputs( char *str, FILE *fp );功能:向指定文件写入字符串参数: str:字符串 fp:文件指针返回值: 成功:返回非负数 失败:返回EOF3)例程 fputc函数函数功能:向D:\\demo.txt...
2021-04-23 16:47:41
4415
原创 常用shell语法
1) 包含for循环2)while循环3)case4)function函数5)array数组操作6)算数运算(letexpr)7)select语法脚本shell_grammer.sh#! /bin/bash#forecho "for**********************"for((i=0;i<3;i++))do echo "while $i"done#whileecho "while********************"while.
2021-04-22 13:44:07
3384
原创 wpa_supplicant 工具操作wifi模块
所需软件 1) wpa_supplicant工具包 2)内核支持wlan模块,和命令0)启动wlan0 ifconfigwlan0up1)启动wpa_supplicant wpa_supplicant -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf -B -D nl80211:表示驱动类型名称为nl80211 -i wlan0:表示网络接口名称为wlan0 -c /etc/wpa_supplic...
2021-04-21 15:17:05
745
原创 shell中$0、$?、$!、$$、$*、$#、$@
1)$0 shell本身文件名2)$?最后运行命令的返回值3)$!shell最后运行的后台process的PID4)$$ shell本省的pid5)$# shell的参数个数6)$@所有参数列表, 以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个7)$* 所有参数列表,以"$1" "$2" … "$n" 的形式输出所有参数eg: aa.sh#! /bin/bashecho "$*"echo "$#"echo "$@"e...
2020-07-22 09:08:47
25367
2
原创 fread误区
打开一个文件fopen之后,执行多次fread,文件位置会自动向文件尾移动,两个printf,第一个打印12345;第二个67890hello.txt里写入1234567890内容。#include <stdio.h>#include <stdlib.h>int main(){ FILE *fp; fp = fopen("hello.txt"...
2019-11-26 17:30:18
709
转载 linux下实现对framebuffer(/dev/fb0)的截屏操作
在linux系统中,使用framebuffer来提供用户态进程直接操作显示屏的功能.在嵌入式系统开发中,需要对显示屏的内容进行截取,实现一个lcd截屏工具实现对显示屏内容的截取,存储为bmp格式.一个bmp文件有四部分组成:其中位图文件头内容如下:WORDbfType;DWORDbfSize;WORDbfReserved1;WOR...
2019-11-26 17:17:38
918
转载 24位RGB转16位RGB原理
有许多朋友第一次使用16位彩色显示屏会遇到如何将24位RGB颜色转换为对应的16位RGB颜色的问题,通过查阅相关资料,就写一下其中的转换原理吧,希望对大家会有所帮助。我们知道24位RGB是分别由8位红色,8位绿色以及8位蓝色组成:RRRRRRRRGGGGGGGGBBBBBBBB例如:24位RGB红色表示方法为11111111000000...
2019-11-26 16:27:06
1040
原创 红黑树,思路清楚
网上看到的关于红黑树的讲解,思路比较清楚的一个.原文地址:http://blog.csdn.net/yang_yulei/article/details/26066409配合这篇http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html一块看,效果更佳.http://www.cnblogs.com/skywang123...
2019-11-20 10:08:38
221
转载 单链表操作与实例(全)
//#include "stdafx.h"#include "stdio.h"#include <stdlib.h>#include "string.h" typedef int elemType ; /************************************************************************//* ...
2019-11-19 11:21:16
353
转载 计算机为什么要使用补码计算?
今天无意中翻看大学的笔记,看到一个问题:通用计算机为什么使用二进制补码做数学运算?毕业这么多年了,被这个问题给折腾了一下,估计工作N年的人猛地你问他这个问题,他一定会回答没有什么原因,因为用补码,所以用补码;偏偏我不是那样的人,简单的问题能解释明白,也不容易;一下是总结:--------------------------------------------------------------...
2019-11-18 16:21:14
2256
转载 TAILQ队列(全)
宏名称 操作 TAILQ_INIT 初始化队列 TAILQ_FOREACH 对队列进行遍历操作 TAILQ_INSERT_BEFORE 在指定元素之前插入元素 TAILQ_INSERT_TAIL 在队...
2019-11-07 13:48:06
557
转载 标准库文件操作(全)
一、打开一个流这三个函数的区别是:(1)fopen打开路径名由pathname指示的一个文件(2)freopen常用于一个打开的流重新定向。比如stdout是标准输出,我们可以把它重定向到由path指定的一个文件。(3)fdopen取一个现存的文件描述符,并使一个标准的I/O流与该描述符相结合。总结如下:二、一步步探究A.fopen函数#in...
2019-11-07 10:03:21
934
原创 #、##、__VA_ARGS__和##__VA_ARGS__
一、#用来把参数转换成字符串例子一:#include <stdio.h>#define P(A) printf("%s:%d\n",#A,A);int main(int argc, char **argv){ int a = 1, b = 2; P(a); P(b); P(a+b);}输出为:例子二:#includ...
2019-11-05 15:47:35
174
转载 多线程编程(全)
一、线程的基本概念进程(process)和文件(files)是unix/linux操作系统两个最基本的抽象。进程是处于执行期的程序和它所包含的资源的总和,也就是说一个进程就是处于执行期的程序。一个线程(thread)就是运行在一个进程上下文中的一个逻辑流,不难看出,线程是进程中最基本的活动对象。 在传统的系统中,一个进程只包含有一个线程。但在现代操作系统中,允...
2019-11-05 15:17:40
2224
转载 嵌入式文件系统详解
在嵌入式领域,FLASH是一种常用的存储设备,Flash闪存作为嵌入式系统的主要存储设备有其自身的特性。Fash的写入操作只能把对应位置的1修改成0,而不能把0修改为1,而擦除Fash就是把对应存储块的内容恢复为1。因此,一般情况下,向Fash写入内容时,需要先擦除对应的存储区间,这种擦除是以块(Bock)为单位进行的。闪存主要有NOR和NAND两种技术。因为Flash存储器的擦写次数是有限的,N...
2019-10-30 16:34:38
843
原创 库函数文件操作
/****************************************************************************int fseek(FILE *stream, long offset, int fromwhere);**********************************************************************...
2019-10-30 11:54:03
203
转载 linux设备/dev/dsp,/dev/mixer
Linux的音频输入输出是通过/dev/dsp设备的,但对于这些声音信号的处理则是通过/dev/mixer设备来完成的.一、数字音频音频信号是一种连续变化的模拟信号,但计算机只能处理和记录二进制的数字信号,由自然音源得到的音频信号必须经过一定的变换,成为数字音频信号之后,才能送到计算机中作进一步的处理。数字音频系统通过将声波的波型转换成一系列二进制数据,来实现对原始声音的重现,实现这一...
2019-10-29 15:30:22
1309
转载 __attribute__ ((packed)) 和 __attribute__ ((aligned(4)))的用法
1、attribute((packed))的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。2、attribute((aligned(n)))的作用就是告诉编译器在编译过程中按照n字节对齐。常常用来在结构体后面进行修饰。#include <stdio.h>/*编译器默认是4字节对齐*/struct test{ ...
2019-10-29 11:47:48
845
转载 framebuffer学习/dev/fb0
定义:是用一个视频输出设备从包含完整的帧数据的一个内存缓冲区中来驱动一个视频显示设备帧缓冲设备对应的设备文件为/dev/fb*,如果系统有多个显示卡,Linux下还可支持多个帧缓冲设备,最多可达32个,分别为/dev/fb0到/dev/fb31,而/dev/fb则为当前缺省的帧缓冲设备,通常指向/dev/fb0,在嵌入式系统中支持一个显示设备就够了。帧缓冲设备为标准字符设备,主设备号为2...
2019-10-25 17:02:38
1390
原创 /proc/meminfo详解
MemTotal: 29584 kB //物理内存MemFree: 968 kB //剩余物理内存Buffers: 28 kB //用来给文件做缓冲的大小Cached: 4644 kB 被高速缓冲存储器(cache memory)用的内存的大小(等于 diskcache minus ...
2019-10-24 14:35:46
2489
原创 封装函数log按级别输出
设置打印界别DEBUG>INFO>WARNING>ERROR,通过设定DEBUG_LEVEL来确定需要哪类打印,方便调试#ifndef _TYPEDEF_H_#define _TYPEDEF_H_#include <stdio.h>#define DEBUG_OUTPUT 3#define INFO_OUTPUT 2#define ...
2019-10-24 13:37:08
183
转载 硬件看门狗/dev/watchdog
Linux 自带了一个 watchdog 的实现,用于监视系统的运行,包括一个内核 watchdog module 和一个用户空间的 watchdog 程序。内核 watchdog 模块通过 /dev/watchdog 这个字符设备与用户空间通信。用户空间程序一旦打开 /dev/watchdog 设备(俗称“开门放狗”),就会导致在内核中启动一个1分钟的定时器(系统默认时间),此后,用户空间程序需...
2019-10-24 10:57:10
5708
原创 C程序代码规范
1、头文件(.h)的组织方式(从上到下)头文件说明 //注释 防止重复包含宏定义//#ifndef __CONFIG_H__ #deine __CONFIG_H__ #endif 调试开关 头文件引用 //#include“config.h” 宏定义 //#define OK 0 结构定义 //struct 常量声明 ...
2019-10-23 13:55:34
328
转载 C程序的存储布局
size - list section sizes and total size是GNU Development Tools,列出目标文件各个部分所占的字节数,当不输入目标文件时,将会把a.out文件作为缺省输入文件名。[clef@rhel6164 c]$ size a.out text data bss dec hex filename 1317 ...
2019-10-23 10:13:59
231
原创 32位机器下数据类型长度
对于32位机器,采用gcc编译器或交叉编译器下面数据类型所占字节个数。char 1 %c short 2 %hd int 4 %d long 4 %ld float 4 %f或%g double 8 %lf或%lg 指针 4 %p u_char 1 %c u_s...
2019-10-14 14:28:34
757
原创 编写shell脚本实现执行Makefile高亮错误输出
一个很大工程当我们执行make去进行编译的时候,有时会出现warning;error:undefined情况,高亮这个条目方便我们更好的发现问题 将make产生的 标准错误输出 重定向到/tmp/111文件中,标准输出输出到终端 make.sh#!/bin/shif [ -z "$1" ]then make 2>/tmp/11...
2019-10-12 15:39:42
652
转载 shell字符串截取
参考文献:linux中shell截取字符串方法总结[Linux]如何在Shell脚本中计算字符串长度?截取字符串的方法一共有八种,主要为以下方法shell中截取字符串的方法有很多中,${expression}一共有9种使用方法。${parameter:-word}${parameter:=word}${parameter:?word}${parameter:+wo...
2019-10-12 15:05:59
406
转载 格式: echo -e "\033[字背景颜色 字体颜色m字符串\033[0m"
转自:http://blog.csdn.net/panpan639944806/article/details/23930553格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"例如:echo -e "\033[41;36m something here \033[0m"其中41的位置代表底色, 36的位置是代表字的颜色那些ascii code...
2019-10-12 14:50:32
130
转载 malloc realloc calloc区别
(1)C语言跟内存分配方式<1>从静态存储区域分配.内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.<2>在栈上创建在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限....
2019-09-24 14:55:02
157
转载 github添加ssh key
此经验分两部分:第一部分介绍:在windows下通过msysGit(Git for windows、Git Bash)配置SSH Keys连接GitHub。第二部分介绍:在GitHub上创建仓库,在本地创建项目,然后将本地项目通过SSH提交到GitHub仓库中。工具/原料 GitHub msysGit(git for windows、Git Bash) msysGi...
2019-09-18 11:07:53
279
原创 tftp 命令
1、tftp -g -l/-r 源文件名 服务器地址 eg: //从tftp服务器172.16.11.59上下载到当前目录 tftp -g -r aa.txt 172.16.11.59 2、ftp –p –r 目标文件名 -l 源文件名 服务器地址 eg: //将当前目录文件aa.txt 上传到tftp服务器 tftp -p -...
2019-09-18 10:58:39
8739
原创 pthread_cond_timedwait 应用
#include <stdio.h>#include <time.h>#define NET_IDEL_INTERVAL_SEC 3#define NET_IDEL_INTERVAL_NSEC 0pthread_mutex_t net_call_mutex = PTHREAD_MUTEX_INITIALIZER;pthread_cond_t net_cal...
2019-09-08 14:47:39
340
转载 嵌入式开发产品流程
嵌入式产品,与普通电子产品一样,开发过程都需要遵循一些基本的流程,都是一个从需求分析到总体设计,详细设计到最后产品完成的过程。但是,与普通电子产品相比,嵌入式产品的开发流程又有其特殊之处。它包含嵌入式软件和嵌入式硬件两大部分,针对嵌入式硬件和软件的开发,在普通的电子产品开发过程中,是不需要涉及的。嵌入式产品的研发流程具体如下图:下面,针对嵌入式产品的开发过程中的各个阶段,我们...
2019-06-16 12:20:02
252
原创 字符设备
字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现 open, close, read和 write 系统用。块设备在大部分的 Unix 系统, 块设备不能按字节处理数据,只能一次传送一个或多个长度是512字节( 或一个更大的 2 次幂的数 )的整块数据。而Linux则允许字符设备传送任意数目的字节。因此, 块和字符设备的区别仅仅是驱动的与内核...
2019-06-16 10:38:01
1977
转载 linux环境变量文件区别
属性区别(转载http://www.cnblogs.com/fuxueming/p/6603119.html)1./ etc / bashrc:为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。也就是说,当用户shell执行了bash时,运 行这个文件。2.〜/ .bashrc该文件存储的是专属于个人bash shell的信息,...
2019-06-05 11:02:19
183
MCP2518,MCP2517
2024-03-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人