- 博客(44)
- 资源 (2)
- 收藏
- 关注
原创 tmux 移植到ARM板端运行环境搭建
tmux源码下载:Home · tmux/tmux Wiki · GitHub依赖的库代码下载:libevent:ncurses:1.cd ./libevent-2.1.12-stable./configure --host="arm-linux-xxx交叉编译器" --prefix=$(pwd)/build CC=arm-linux-xxx交叉编译器-gcc --disable-assumed-color --disable-opensslmake -j8make installbuild目录下
2024-06-11 11:02:56 1080
原创 so库后缀数字的目的和含义
Linux学习之旅(13)-----静态库和动态库_so文件后面的数字-CSDN博客https://www.cnblogs.com/lidabo/p/13862630.html
2024-02-22 16:48:20 568
原创 【无标题】面试
3.智能指针 哪几种,unique_ptr不支持直接赋值操作 需通过move转交权限,shared_ptr(引用计数) , weak_prt的作用 以及循环引用的情况举例。7.ASAN 的一些配置操作有哪些,比如出错是否停止程序、是否开启内存泄漏检测。1. malloc 空间连续性(物理地址不连续),底层原理(blk)2. STL vector内存特点、扩容机制、扩容时数据的拷贝方式。5.设计模式:抽象工厂、观察者模式、单例模式(写代码)4.类 多态如何实现的,虚函数、虚函数表、重载。
2023-10-16 11:24:20 106
原创 多线程下的signal信号处理
下边的代码可以验证该结论,多次Ctrl+c,会被不同的线程捕获此信号,并处理,最终每个线程死锁,阻塞在等待锁的状态。多线程中,信号在哪个线程中处理是不确定的,可能被任意一个线程处理。
2023-08-25 10:54:23 1002
原创 共享内存、信号量 进程间通讯应用示例
/必须加斜杠‘/’,不得用相对路径。//必须加斜杠‘/’,不得用相对路径。使用POSIX机制共享内存、信号量的API,实现进程通讯。
2023-07-12 18:31:13 235
原创 C代码 如何定位某函数的调用者是谁?
在代码调试中,有时想知道某个函数(如 add(int a, int b)函数)被谁所调用了,最笨的方法就是在每个add()被调用的行前面加上log,如果有几十处地方调用了该函数, 修改起来太麻烦。因此,为了“偷懒”,可在不改变add原函数和调用者函数的情况下,通过宏的方式可实现,如。用宏add代替原来的函数add,宏展开后相当于在每个add函数调用的地方前都会增加一行代码 printf("%s(), line %d\r\n",__FUNCTION__, __LINE__);即打印出调用者的函数名和行号。
2023-03-28 15:59:12 1359
原创 标准I/O和系统I/O的本质区别
这些API根据是否涉及系统调用,可以分为两种,系统API:如open、read、write等函数是内核代码提供的API,当应用程序中调用某个系统API时,cpu就会“跳转”到内核中执行open的代码,执行完之后再回到应用层,即从用户态进入到内核态,再回到用户态。涉及到系统调用:如fopen、fread、fwrite、fseek等,这类API内部代码实际上会调用到一个或者多个系统API。未涉及系统调用:如memcpy、strlen、malloc等,这类API内部代码 不会再调用到任何系统API。
2022-09-16 11:16:59 457
原创 TCP三次握手过程中的半连接和全连接
accept过程: 当server端主动调用accept时,会将该client从半连接状态队列转入到全连接状态队列,并生成该client的fd,此后server通过该fd与client进行会话。之后 如果client不断去重新发出连接请求,最终server端的半连接状态队列将满(大小有listen接口设置),连接状态处于SYN_RECV状态(通过netstat 命令可以看到 Recv-Q已达到连接个数上限和连接状态)对于server端来说,
2022-09-13 14:33:16 2739 1
原创 Linux 设置系统时间函数
关于时间的库函数#include <stdio.h>#include<sys/time.h>#include<unistd.h>#include <time.h>int SetSystemTime(char *dt){ struct tm rtc_time; struct tm _tm; struct timeval tv; time_t timep; sscanf(dt, "%d-%d-%d %d:%......
2022-06-16 19:21:17 944
原创 内存泄漏检测工具ASAN
1.编译环境配置CCFLAGS += -fsanitize=address -g #开启内存越界检测,加-g定位到代码行号。CCFLAGS += -fsanitize-recover=address#采用该选项支持内存出错之后程序继续运行,并且必须运行环境下配置export ASAN_OPTIONS=halt_on_error=0才会生效。LDFLAGS += -lasan #链接asan动态库4.asan库存放路径,供链接时使用lib/CortexA5_linux/libas...
2022-05-05 01:02:12 1480
原创 Linux 下source、sh、bash、./的本质区别及用途
之前也试图多次理解它们的区别,都没理解透彻,今天算是有了更清晰的认识,记录一下。首先理解这几个命令的本质区别前,先要明白进程和子进程的概念。比如Linux 一个shell命令窗口,就是Linux系统的一个shell进程,如果打开命令窗口就是多个shell进程,每个进程都有自己独立的的环境,比如使用env命令查看到的就是当前窗口进程的环境变量。在这个窗口下通过命令运行起来的程序(比如一些Linux命令,如ls命令或./ext_file 命令,命令即程序),就是该shell窗口进程的子进程,子进程会继承父进
2022-04-29 18:59:42 5040
原创 gdb定位Segmentation fault 问题
1. gcc编译参数加上 -ggcc -g test -o test.c直接gdb环境下运行test,异常时会打印所在代码行号,或者按照一下方式2. 命令打开core dump 功能$ ulimit -c unlimited3. 运行程序$ ./test程序Segmentation fault退出后,在当前目录下生成一个core文件4. 使用gdb 工具解析该core文件,定位到代码错误行号Linux之core dumped出错原因及位置分析_ZONG_XP的博客-C..
2022-04-27 22:24:56 1485
原创 代码调试手段之__builtin_return_address
1. 如何知道某个函数被是被谁调用的Linux 内核:可通过dump_stack()分析dump_stack()使用方法_yanlaifan的博客-CSDN博客_dump_stacklinux内核中打印栈回溯信息 - dump_stack()函数分析_落尘纷扰的博客-CSDN博客_dump_stack应用程序:使用 __builtin_frame_address()、__builtin_return_address()分析__builtin_return_address(LEVEL)函数
2022-04-18 12:11:38 1590
原创 线程、进程 互斥、同步
进程 系统中程序执行和资源分配的基本单位 每个进程有自己的数据段、代码段和堆栈段 在进行切换时需要有比较复杂的上下文切换线程 减少处理机的空转时间,支持多处理器以及减少上下文切换开销, 比创建进程小很多 进程内独立的一条运行路线 处理器调度的最小单元,也称为轻量级进程可以对进程的内存空间和资源进行访问,并与同一进程中的其他线程共享线程 线程相关的执行状态和存储变量放在线程控制表内 一个进程可以有多个线程,有多个线程控制表及堆栈寄存器,共..
2022-04-18 11:40:36 239
原创 循环双向链表写法
#include <stdio.h>struct list_head{ struct list_head *next, *prev; int num;};int list_add(struct list_head *new,struct list_head *prev,struct list_head *next){ if(new == NULL || prev == NULL || next == NULL) { printf("new %p,prev ...
2022-04-18 11:39:55 108
原创 mmap函数用法,实现一个devmem工具
#include <sys/mman.h>void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);int munmap(void *addr, size_t length);addr 所要映射的虚拟内存地址,映射成功后返回该地址。 如果为NULL或者无效地址,由系统会自动分配映射的虚拟地址。 length 需要映射的空间大小 pro...
2021-12-21 15:15:44 355
原创 软件测试汇总
明天去面试软件测试,给我些建议,或者面试题预测? - 知乎软件测试面试题(带答案) - 知乎软件测试面试题分享-No.1 - 知乎软件测试面试题APP篇 - 知乎软件测试常见的面试题(46道) - 知乎2021年软件测试面试题大全_hard_days的博客-CSDN博客_软件测试面试题最全的软件测试面试题(含答案)软件测试面试题及答案【史上最全】 - 权宝 - 博客园软件测试面试题集合(一)_软件测试的技术博客_51CTO博客_测试面试常见的问题https://wenku
2021-09-28 00:00:36 109
原创 repo 修改代码比对 打包脚本
功能:repo管理多个git仓库时,想把原代码文件和修改后的代码文件进行打包,后边可将该包提供给他人,通过文本比对工具打开,即可查看new和old代码差异#!bin/bashPATH1=`pwd`DSTDIR_NEW="$PATH1/$1/new"DSTDIR_OLD="$PATH1/$1/old"STATUS=0GITPATH=GITPATH2=function call_m(){ if [ $STATUS -eq 0 ];then STATUS=1; ...
2021-01-22 15:19:07 508
原创 g++编译阶段打印宏内容方法
转载:https://blog.csdn.net/beanjoy/article/details/9144483 //两个用于测试的宏 #define PI 3.1415926 #define MAX(a,b) (a)>(b) ? (a) :(b) //首先定义两个辅助宏 #define PRINT_MACRO_HELPER(x) #x #define PRINT_MACRO(x) #x"="PRINT_MACRO_HELPER(x) //编译阶段打印...
2020-12-01 15:29:18 537
原创 iconv 文本编码格式转换
static int conv_charset_fun(const char *dest, const char *src, char *input, size_t ilen, char *output, size_t olen){ size_t buflen = olen; iconv_t conv = iconv_open(dest, src); if(conv == (iconv_t) -1) { ULOG("iconv_open...
2020-10-20 14:23:43 1527
原创 socket select多路连接,及fd_set用法
fd_set用法:https://blog.csdn.net/w00347190/article/details/100972645/***********************************fd_set 用法:void FD_SET(int fd, fd_set *fdset);void FD_CLR(int fd, fd_set *fdset);void FD_ISSET(int fd, fd_set *fdset);void FD_ZERO(fd_set *fd.
2020-07-19 19:21:36 1856
原创 内存申请、释放通过标记统一管理
#include <errno.h>#include <pthread.h>#include <map>#include <stdlib.h>#include <sys/time.h>#include <stdio.h>#include <unistd.h>using namespace std;#define SFA_MEM_FLAG#define sfaMalloc(size) sfaMe...
2020-07-09 00:58:36 186
原创 time 、localtime、localtime_s、localtime_r、gettimeofday 的使用
1. time 函数 原型: time_t time(time_t *calptr) 得到自1970-1-1, 00:00:00以来经过的秒数,结果可以通过返回值,也可以通过参数得到,见实例 头文件 <time.h> 返回值: 成功:秒数 失败:-1 例: time_t now;...
2020-04-03 18:35:51 2023
原创 链表基本用法(添加节点、删除节点、清空节点、显示所有节点)
#include <stdlib.h>#include <stdio.h>typedef struct stNode{ int data; struct stNode * next;}Node;Node *addNode(Node *head);void clearList(Node *head);void displyNode(Node *hea...
2020-03-09 17:07:46 376
原创 so库生成和用法汇总
函数名 功能描述 dlopen 打开对象文件,使其可被程序访问 dlsym 获取执行了 dlopen 函数的对象文件中的函数的地址 dlerror 该函数没有参数,它会在发生前面的错误时返回一个字符串,同时将其从内存中清空; 在没有错误发生时返回 NULL, dlclose 关闭目标文件。如果无需再调用共享对象的话,应用程序可以调用该方法来通知...
2019-12-29 15:49:50 4881
原创 类静态成员、单件模式用法
私有构造函数实现单件模式:https://blog.csdn.net/zlf19910726/article/details/81228245https://www.runoob.com/design-pattern/singleton-pattern.html#include <stdio.h>#define PATTERN_SINGLETON_DECLARE(clas...
2019-12-01 18:07:31 183
原创 #define中 #与##用法
宏定义:#define SMART_LOG(fmt, args...) \ ULOG("[%d]" fmt, __LINE__, ## args);使用示例:SMART_LOG("count =%d,time=%d\n", count ,time);等价于==》ULOG("[%d]" "count =%d,time=%d\n", __LINE__,co...
2019-10-30 18:17:54 310
原创 检测点在多边形内外算法
#include<iostream>#include<cstdio>using namespace std;const int maxn=110;const double eps=1e-5;struct point{ double x,y;};point poly[maxn];bool insidepolygon(point p,int ...
2019-08-20 17:01:30 260
原创 位域(位段)详解
有些数据在存储时并不需要占用一个完整的字节,只需要占用一个或几个二进制位即可。例如开关只有通电和断电两种状态,用 0 和 1 表示足以,也就是用一个二进位。正是基于这种考虑,C语言又提供了一种叫做位域的数据结构。在结构体定义时,我们可以指定某个成员变量所占用的二进制位数(Bit),这就是位域。请看下面的例子:struct bs{ unsigned m; unsigned n: 4; u...
2019-08-12 23:39:13 1210
转载 C语言数据类型的隐式转换
算术运算符中的转换规则:double ←── float 高↑long↑unsigned↑int ←── char,short 低注意: 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起...
2019-07-06 16:48:13 198
原创 指针与引用的本质
以下是上边程序的汇编代码,通过汇编代码可以看出给ra分配了内存空间,每个变量在栈内存中存储的顺序并不是按照代码行的顺序排的(因为编译器优化),ra的内存空间在a的上边。验证的思路:是否给变量ra分配了内存?若分配了内存,内存中存储的值是否就是变量a的地址?
2019-07-06 15:32:06 44
原创 Linux ping www.baidu.com 不通解决办法
ping www.baidu.com //提示找不到该网址,而直接与宿主机之间使用 IP 地址进行互ping,则可以ping得通;在Ubuntu的浏览器中输入www.baidu.com ,无法打开百度网页;但输入百度的IP地址,则可以打开百度,这说明是DNS服务出现了问题解决办法总结:前两个解决方案:转载:http://www.cnblogs.com/dongling/p/55918...
2019-04-01 00:15:54 8405
转载 Ubuntu 手动配置IP和dhcp自动配置IP
Ubuntu网络配置如下:Ubuntu上连了两块网卡,eth0为外网的eth1为内网的eth0上IP为自动获取eth1上为手工设置1、打开Ubuntu的/etc/network/interfaces文件 。默认内容如下 auto lo iface lo inet loopback2、如果以DHCP方式配置网卡,则改为:auto eth0 iface eth0 inet dh...
2019-03-31 22:34:18 11514
原创 三维空间离散点 平面拟合算法 C++实现
#include "pch.h"#include <iostream>#include <windows.h>#include <vector> using namespace std;#include "math.h" double test1[24][3]{{-735, -312, 193},{ -252 ,-298 ...
2019-03-07 13:49:29 7858 6
转载 samba 共享Ubuntu文件到Windows下后,打开无修改文件权限的问题
原文:https://blog.csdn.net/zz603976046/article/details/77530187第一步:share/是您samba共享的文件夹$ sudo chown -hR yourCreatName:Groupxxxx share_filename/yourCreatName:samba共享文件夹的创建者Groupxxxx:创建所属组$ sudo ch...
2019-02-21 10:04:00 2167
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人