- 博客(16)
- 资源 (1)
- 收藏
- 关注
转载 send/sendto和recv/recvfrom的区别
一般情况下:send(),recv()用于TCP,sendto()及recvfrom()用于UDP但是send(),recv()也可以用于UDP,sendto()及recvfrom()也可以用于TCPsendto可以在参数中指定发送的目标地址 , send需要socket已建立连接, sendto 可用于无连接的 socket 对于send的有连接socket,两者一样,sendto最后两个参数没用.send函数int send( SOCKET s , const char FAR *buf ,
2021-09-24 10:09:26 748
转载 C语言重入函数与不可重入函数
可重入函数和不可重入函数的概念 在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重入函数。如果是在函数体内 动态申请内存的话,即便 新的线程调用这个函数也没事,因为新的线程使用的是新的函数的 新申请的动态内存(静态变量只有一份,所以 多线程对于函数体内的静态变量改变 会有无法修复的结果),所以这类函数就是可重入函数。 在 实时系统的设计中,经常会出
2021-04-27 11:58:33 698
原创 sourceinsight小改动
sourceinsight小改动Source Insight中的多行注释快捷键一、Project —> Open Project 中打开Base项目(source insight自带的工程),新建一个comment.em的文件,添加以下内容后保存:实现“//”的多行注释:macro MultiLineComment(){ hwnd = GetCurrentWnd() selection = GetWndSel(hwnd) LnFirst = GetWndSelLnFi
2021-03-30 19:10:17 240
原创 系统、机制、任务调度、信号量
实时系统下任务调度总结一、实时系统:能在规定的时间内对发生的事件及时进行相应处理的操作系统。实时系统的实时性分为两类,一种是硬实时,在规定的时间内需要完成相应的任务,否则会造成重大的问题(影响),另外一种是软实时,主要是按照任务的优先级,尽快完成相应的任务即可。二、分时系统多个任务分时共享系统资源,通过将CPU时间划分为多个段,分配给任务,任务获取得到时间片,在时间片的时间范围内执行任务操作。使得每个任务都能获得到CPU资源,在宏观上实现多并发任务。三、协作式管理机制任务切换的时机取决于正在运行
2020-12-10 14:15:18 402
原创 strtok分割字符串提取
strtok原型char *strtok(char s[], const char *delim);分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。strtok函数会破坏被分解字符串的完整,调用前和调用后的s已经不一样了。返回值从s开头开始的一个个被分割的字符串。当s中的字符查找到末尾时,返回NULL。如果查找不到delim中的字符时,返回当前strto
2020-12-10 14:11:14 794
原创 MQTT初步学习
mqtt1. MQTT简介MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。2. MQTT应用IBM和St. Jude医疗中心通过MQTT开发了一套Merlin系统,该系统使用了用于家庭保健的传感器。St. Jude医疗中心设计了一个叫做Merlin@home
2020-12-07 11:45:35 599
原创 任务控制块认识了解
任务控制块任务控制块是一个基于链表的数据结构,任务控制块主要用于记录任务的堆栈栈顶指针、指向下一个任务控制块的指针、任务等待的延迟时间、任务的当前状态标志与任务的优先级别等一些与任务管理有关的属性。任务的识别对于RTOS来说,为每一个任务分配一个称为任务控制块的结构体变量来管理任务,即使用指向任务控制块结构体变量的指针来识别任务。任务控制块是多任务操作系统的核心数据,如果操作错误,可能导致系统崩溃。所以这个指针不应当提供给用户程序。任务控制块的结构体数组struct tn_os_tcb{ j
2020-12-07 11:42:54 3022
原创 C++异常处理机制案例方案
#include<iostream>using namespace std;int divide(int x, int y){ if (y == 0) { throw 0;//抛出错误 } return x / y;}void test(){ int a, b; try { cout << "请输入两个整数a和b" << endl; cin >> a >> b; int k = divide(a, b)
2020-09-30 14:55:14 183
原创 修改linux下用户和root密码
设置root用户密码输入以下命令:sudo passwd输入新的root用户密码。设置普通用户密码输入以下命令:passwd <username>输入新的用户密码。
2020-09-30 09:23:52 79
原创 snprintf()函数使用学习笔记
snprintf()描述C 库函数int snprintf(char *str, size_t size, const char *format, …)设将可变参数(…)按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。声明下面是 snprintf() 函数的声明。int snprintf ( char * str, size_t size, const char * format, ... );参数str
2020-09-29 14:40:38 165
原创 sprintf函数使用学习笔记
sprintfsprintf()函数用于将格式化的数据写入字符串,其原型为:int sprintf(char *str, char * format [, argument, ...]);【参数】str为要写入的字符串;format为格式化字符串,与printf()函数相同;argument为变量。除了前两个参数类型固定外,后面可以接任意多个参数。而它的精华,显然就在第二个参数–格式化字符串–上。 printf()和sprintf()都使用格式化字符串来指定串的格式,在格式串内部使用一些以“%”
2020-09-29 14:40:04 290
原创 任务控制块学习笔记
任务控制块任务控制块是一个基于链表的数据结构,任务控制块主要用于记录任务的堆栈栈顶指针、指向下一个任务控制块的指针、任务等待的延迟时间、任务的当前状态标志与任务的优先级别等一些与任务管理有关的属性。任务的识别对于RTOS来说,为每一个任务分配一个称为任务控制块的结构体变量来管理任务,即使用指向任务控制块结构体变量的指针来识别任务。任务控制块是多任务操作系统的核心数据,如果操作错误,可能导致系统崩溃。所以这个指针不应当提供给用户程序。任务控制块的结构体数组struct tn_os_tcb{ j
2020-09-29 14:38:05 759
原创 内存泄漏学习笔记
内存泄漏(Memory Leak,内存泄漏)含义内存泄漏(memory leak)是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费。为什么会产生内存泄漏?当一个对象已经不需要再使用本该被回收时,另外一个正在使用的对象持有它的引用从而导致它不能被回收,这导致本该被回收的对象不能被回收而停留在堆内存中,这就产生了内存泄漏。内存泄漏对程序的影响?只发生一次的小的内存泄漏
2020-09-29 14:35:40 170
原创 联合体union笔记
联合体union当多个数据需要共享内存或者多个数据每次只取其一时,可以利用联合体(union)。1)联合体是一个结构;2)它的所有成员相对于基地址的偏移量都为0;3)此结构空间要大到足够容纳最"宽"的成员;4)其对齐方式要适合其中所有的成员;下面解释这四条描述:由于联合体中的所有成员是共享一段内存的,因此每个成员的存放首地址相对于于联合体变量的基地址的偏移量为0,即所有成员的首地址都是一样的。为了使得所有成员能够共享一段内存,因此该空间必须足够容纳这些成员中最宽的成员。对于这句“对齐方式要适合
2020-09-29 14:34:31 137
原创 #ifdef和#if的区别
ifdef和if的区别ifdef1)#ifdef只是判断后面的标识符有没有定义,而不在乎标识符的值,标识符是0是1对它来说都没有区别,只要预先定义了,执行#ifdef后的代码;2)#ifdef是和#else搭配使用的,没有#elif搭配之说;3)#ifdef必须要有#endif配合使用;#define IFTEST1 0#define IFTEST2 1int main(){#ifdef IFTEST1 printf("ifdef: %d\n", IF
2020-09-29 14:30:16 1410
转载 C语言中双下划线__的作用
C语言中双下划线__的作用以单下划线(_)表明是标准库的变量双下划线(__) 开头表明是编译器的变量所以 双下划线__只是C语言的一个合法标识符不一定是变量, 也可以是函数,宏等。同时双下划线(__)多用于告警提示:FILE 包含当前程序文件名的字符串LINE 表示当前行号的整数DATE 包含当前日期的字符串STDC 如果编译器遵循ANSI C标准,它就是个非零值TIME 包含当前时间的字符串代码示例如下:#include <stdio.h>int main(){
2020-09-29 14:27:28 7933
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人