日常零碎记录

本文详细介绍了C语言中的变量存储类型、内存操作、常用函数、Linux开发注意事项、WindowsAPI使用、动态链接库、内存管理、调试工具、文件操作、系统管理及网络监控等技术点。
摘要由CSDN通过智能技术生成

零碎

C变量存储

静态存储区 : 不受人为控制,编译期更具变量大小分配 生命周期等于程序运行时期

静态变量 常量 全局变量 

2023年11月14日

9:11

#ifdef  嵌套使用 内部要用  #if

高位低位 16 进制  移位操作

计算  两个值存储

Int= Int << 16     

Int = Int | int  用 或 代替 相加

高位  0xffff0000 & int

低位  0x0000ffff & int

常用 c 函数

memset  初始化数据

strcpy  复制数据  改用strncpy  第三个参数是目标容器的size

strcat  追加数据

strcmp  比较字符串相等  0  相等

strstr  是否包含某个字符串  true 第一个包含的地址  false : -- null

memcpy  内存拷贝 。

fprintf  函数 格式化输出数据 可用于拼接替换字符串。改用 fnprintf

linux 开发注意点

linux 下CALLBACK 需要定义为空 如 #define CALLBACK 因为CALLBACK 对应的是 _stdcal  这是一个回调规范 而在linux 没有对应的替换

使用goto 关键词 时要注意 变量声明的地方  防止跳过变量声明的地方

linux系统中有个符号链接:/proc/self/exe 它代表当前程序,所以可以用readlink读取它的源路径就可以获取当前程序的绝对路径

#ifdef SDK9000_EXPORTS

#define ExportSDK9000_API __declspec(dllexport)

#else

#define ExportSDK9000_API __declspec(dllimport)

#endif

此段代码意思为 导入导出函数标记 在window 下开发使用

这个是为了 找得到  向外界提供static 变量时避免找不到。可以不用。

搭建镜像环境

/opt/router_manager/  libs_config.json  添加 。so文件

内存泄漏注意

开辟和关闭的内存要相对应 有开辟就要想到在哪里关闭 ,线程内存容易忽略应多关注

内存开辟最好在同一层内关闭 同层逻辑不要管理上下层的数据

Ifdef  是判定是否定义 

Ifndef  判断是否未定义

Sizeof  不可用来当作数组的容量大小 要除相应的数组类型的大小

如  sizeof(int[])/ sizeof(int)

window

#pragma comment(lib,"PlaySdkM4.lib")

win10  开启共享要开启SMB 服务。

HINSTANCE  hin;  //动态加载dll库函数

hin = LoadLibrary(L"delltestdll.dll"); DLL 文件使用

addp add = (addp)GetProcAddress(hin,"add"); / addp 是定义的函数指针

win+r  eventvwr  // 查看系统日志

编译 提示未定义 

在项目中编译 定义环境变量  切换目录编译需要 定为完整路径

Export =/home/lly2/lib/x86_64-linux-gnu 

malloc  calloc 区别

函数malloc()和函数calloc()的主要区别是前者不能初始化所分配的内存空间,而后者能

在代码中 所谓的封装  其实是开辟一个空间 然后返回该空间的地址 然后后续的功能函数 将该地址传递过去, 强制转换为该空间对应的结构体 , 然后对该结构体进项操作 ,这中 操作 大大减少了 对零碎函数的理解  ,不用关注内部的逻辑 ,只需要注意函数外部调用即可

Sh 脚本无法执行

-bash: ./auto_get_dz_test.sh: /bin/bash^M: bad interpreter: No such file or directory

dos2unix auto_get_dz_test.sh

Linux 命令

2023年11月14日

9:08

/** *******************gdb 简单调试**** /

gdb  ./interver

r

bt  查看栈

 f 跳栈

q  // 退出

b   on_tcp_client_read_ihorn_data  // 打断点

b ExportSDK9000PRO.c:180   // 某行打断点 。。

p 变量 //  打印变量内容 

c  // 继续运行 到达下一个断点

n  // 逐行调试

t 跳线程。 

info b  查看断点

delete b 删除断点

thread apply all bt  // 全部多线程的信息

gdb febolaqi core / / 查看core 文件

Pidof  进程号

Gdb attch 进程号 可直接进入该进程的gdb 调试

pidof    命令用于检索指定的命令,返回相应的进程ID   gdb attach 32133  (进程号)可以切入gdb调试

x/20c 0x7f06dac29d40 - 20  打印地址前的20个字符

 

netstat -antp | grep 29999  // 查看端口占用

netstat -apn | grep 6001 查看端口占用

kill -9  进程号  // 消灭进程

export LD_LIBRARY_PATH=./  //  设置共享库路径

find  "/" -name "*.cpp"    // 查找文件

locate router_config.xml   // 查找文件

 gcc -fPIC -shared func.c -o libfunc.so  //GCC 生成动态链接库

gcc main.c libfunc.so -o app.out // GCC 将动态链接库链接到可执行文件

g++  nn.cpp -I ./inlude/ -L ./sdk/ -lpthread -lnvssdk -o nn  // g++编译

gcc ngx.c -o ngx  // gcc 编译

tail -f 日志文件  // 动态查看日志

tar -zcvf filename.tar.gz directory_name  // 压缩文件

tar -xvf filename.tar.gz -C directory_name  // 解压文件到指定目录

unzip -o xxx.zip   解压zip

mount -t cifs -o username=10755,password=td10755 //10.20.30.30/demo_code lly  // 挂载

unmount lly // 卸载

df -h  // 查看挂载。

umount -l   / (立即断开挂载) umount 目标忙时用 

firewall-cmd --zone=public --add-port=9001/tcp --permanent // 添加端口号

firewall-cmd --permanent --zone=<zone_name> --add-port=8000-8010/tcp --permanent

firewall-cmd --reload // 重启防火墙

tcpdump -i ens33 host 10.20.31.53 -s 0 -w /root/lly.cap  // 抓包

tcpdump -i ens33 host 10.20.31.31 -s 0 -w /opt/lly.cap

tcpdump -i any host 10.20.31.31 -vnn -A    抓包并显示。

ifconfig 网络

chmod 777 -R  *  // 修改目录下所有文件文件权限

strace  【命令】 查看命令运行

usr/bin/ld cannot find  * 解决   find / -name "libaes.so" //找到lib 库文件  然后 复制到生成库的位置。

vim  xxx.sh  set ff=unix wq  //window 下编写的sh 文件 无法再unix 下执行    解决

ld xxx.so  // 查看so文件链接

pidof x1

lsof -p 2577352 | grep libStreamConvertor.so  查看库是否加载

pstack 639915 > "test_pstack_100"   查看线程个数 输出到文件

软连接

ln -s dir newFile 

对外库的版本信息查看

strings so名 | grep version

grep -Ern "要找的ip" 可能存在此ip的文件

ln -s 源文件  新链接  // 创建软啊链接

Which  筛选命令  

md5sum libnvssdk.so  查看 md5  值

sudo date 091314302023   // 设置date 日期

sudo hwclock --systohc     //date写入硬件

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值