Linux c
文章平均质量分 58
yuanbinquan
这个作者很懒,什么都没留下…
展开
-
Linux 文件系统只读
Linux 文件系统只读异常处理方式原创 2023-01-29 16:09:24 · 2737 阅读 · 0 评论 -
Linux /proc 文件系统-机型定义
Linux /proc 文件系统-机型定义原创 2022-11-29 14:15:46 · 302 阅读 · 0 评论 -
linux 线程非法退出导致内存泄露
linux 线程非法退出导致内存泄露转载 2022-09-16 09:16:19 · 385 阅读 · 0 评论 -
fsck fat32修复工具
fsck.fat dosfstools fat32修复原创 2022-09-06 18:31:18 · 1506 阅读 · 0 评论 -
检测设备是否插入有线网
检测设备是否插入有线网原创 2022-08-24 17:16:16 · 266 阅读 · 0 评论 -
mp4文件修复
标准mp4文件修复原创 2022-08-02 19:53:12 · 2486 阅读 · 4 评论 -
linux内存泄露分析
linux内存泄露分析,多线程编程单线程内存占用原创 2022-04-25 21:30:59 · 5716 阅读 · 0 评论 -
应用 Valgrind 发现 Linux 程序的内存问题
Valgrind 概述体系结构Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合。Valgrind由内核(core)以及基于内核的其他调试工具组成。内核类似于一个框架(framework),它模拟了一个CPU环境,并提供服务给其他工具;而其他工具则类似于插件 (plug-in),利用内核提供的服务完成各种特定的内存调试任务。Valgrind的体系结构如下图所示:图 1 Valgrind 体系结构Valgrind包括如下一些工具:Memcheck。这是v转载 2020-10-27 10:43:46 · 203 阅读 · 0 评论 -
AddressSanitizer使用介绍
1、关于AddressSanitizer1.1 引言也许很多人都听说过类似这样的一个故事:某公司的服务器每隔3个月就会毫无预兆的崩溃一次,怎么也查不出原因,为了避免崩溃可能引发的问题,只得每2个月手动重启一次服务器。在这类有些灵异的事件背后,以内存泄露为代表的一系列内存错误往往就是那个幕后黑手。在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制,因而造成了内存的浪费转载 2020-06-15 17:36:13 · 12759 阅读 · 0 评论 -
ADPCM音频格式详解 ADPCM_IMA ADPCM_DIV4
网上帖子一大推,都是照搬adpcm音频算法代码,实际使用时需要注意没有相关细节,我在这里补充一片防止大家走弯路//ADPCM-DIV4 音频帧标识头struct adpcm_state{ //前一个采用点值:adpcm算法是根据前一个采样点为基准值,求后续压缩值 short valprev; char index; char rev;};/* Intel ADPCM step variation table */stati...原创 2020-05-23 15:39:16 · 2562 阅读 · 1 评论 -
linux c语言 统计CPU专用率
最近在调试中发现应用程序的CPU占用率高,于是想看是那个线程专用了cpu。 # top 查看cpu专用率,这个时候打印的是进程级别cpu专用率。再按H,就有打印线程级别的cpu专用信息了...原创 2018-09-18 12:05:51 · 1174 阅读 · 0 评论 -
wav数据格式详解
1. 音频简介经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等.44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声);22050HZ 8bitmono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道;...原创 2020-03-11 21:05:51 · 7362 阅读 · 0 评论 -
liunx 系统内存详解
想必在linux上写过程序的同学都有分析进程占用多少内存的经历,或者被问到这样的问题——你的程序在运行时占用了多少内存(物理内存)?通常我们可以通过top命令查看进程占用了多少内存。这里我们可以看到VIRT、RES和SHR三个重要的指标,他们分别代表什么意思呢?这是本文需要跟大家一起探讨的问题。当然如果更加深入一点,你可能会问进程所占用的那些物理内存都用在了哪些地方?这时候top命令可能不能给到你...转载 2020-01-10 20:39:26 · 181 阅读 · 0 评论 -
Linux 中直接 I/O 机制的介绍
简介: 对于传统的操作系统来说,普通的 I/O 操作一般会被内核缓存,这种 I/O 被称作缓存 I/O。本文所介绍的文件访问机制不经过操作系统内核的缓存,数据直接在磁盘和应用程序地址空间进行传输,所以该文件访问的机制称作为直接 I/O。Linux 中就提供了这样一种文件访问机制,对于那种将 I/O 缓存存放在用户地址空间的应用程序来说,直接 I/O 是一种非常高效的手段。本文将基于 2.6.1转载 2017-01-21 14:36:08 · 675 阅读 · 0 评论 -
移植mp4v2开源库,h264+g711a/g711u编码mp4
1、mp4v2移植 step1、下载:https://launchpad.net/ubuntu/+source/mp4v2 step2、编译 简单配置参数: ./configure --host=arm-linux CXX=arm-hisiv100nptl-linux-g++ CC=arm-hisiv10原创 2017-05-08 11:59:39 · 4677 阅读 · 0 评论 -
海思播放器解码记录
在设备端采用minigui+hisi vdec+vo实现本地视频回放,这个方案是在两年前就实现了的。但是最近在对接ipc后,使用播放器播放录像发现以下两个问题: 1)在ipc使用高码流(4MB/s)录像时,视频回放只能回放几秒数据就无法解码 2)设置ipc帧率是25f/s时回放效果是慢放,以前一直使用8f/s测试对于问题1,解决方案是解码器初始化时给的内存大小不足导致的(红原创 2017-03-27 11:22:33 · 5522 阅读 · 2 评论 -
rtsp、rtp tcp和udp链接方式区别
1、工作方式的差异通常来说,RTSP提供UDP方式发送RTP流。当然,发送流媒体时,UDP往往是更好的选择。但是,在互联网上使用UDP方式发送流是不可能的。 下面是使用UDP时的一些问题:1. UDP协议上的RTSP/RTP需要打开许多UDP端口(每一路流媒体都需要2个UDP端口,一个用于接收数据,一个用于接收控制信息);2.当因特网上的路由器没有打开这些端口的时候,上述第原创 2017-03-06 13:23:15 · 16303 阅读 · 1 评论 -
stmp邮件协议讲解
第1章. SMTP概述 1.1. SMTP在邮件通信过程中的位置SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通信中所处的位置如图1所示。 图1.电子邮件的通信过程转载 2017-03-06 13:07:47 · 3916 阅读 · 0 评论 -
rtsp 用户名、密码登录
在使用rtp看视频时,有时候需要使用用户名和密码登录,那么在用户名密码登录的流程是怎么样的呢?大致流程: rtsp 客户端发送DESCRIBE指令 服务器应答401错误,说明需要用户名密码认证 rtsp 客户端再次发送DESCRIBE指令,该指令包含用户名密码等有效信息,原创 2017-02-24 19:44:04 · 21245 阅读 · 0 评论 -
嵌入式设备进行http socket开发流程
最近接触了一个http开发的项目,在这里记录一下主要流程。 下位机:arm linux 上位机:pc web服务器 这里在与web服务器通信时,没有使用第三方开源库工具,而是直接使用socket通信模拟http协议通信,大致思路如下: 1 、对域名解析,将www.xxxx.com之类的网址解析为ip地址,端口没有说明的话,默认80 2、使用so原创 2017-05-02 10:09:30 · 6370 阅读 · 0 评论 -
rtp、rtsp客户端开发流程
环境:VLC做服务器,url:rtsp://192.168.100.77:8554/1 rtsp链路采用tcp链接 rtp采用udp关于rtp、rtsp、rtcp的知识,这里不做详细解释,网上有大把的资料,用户可以自己问度娘。这里直接切入正题。PS:这里还需要唠叨一点,rtsp为字符协议,字符协议中含大量不可见字符原创 2017-02-24 11:42:42 · 7026 阅读 · 0 评论 -
自行实现 Onvif 对接开发模式
对于Onvif协议,在安防视频行业的地方,谁都知道。但是网上就有onvif协议对接的方案都是使用开源的第三方库进行对接,讲解。那么问题来了,我们能不能用代码自己实现呢?答案是肯定的。而要用我们自己的代码实现onvif协议对接,其中牵扯到诸多的协议和概念,这里我大致整理一下,对自行实现Onvif协议对接者提供一个学习思路。1、工具很重要学习onvif之前,需要两个最基本工具:1、ONVI原创 2017-06-15 11:39:18 · 21724 阅读 · 4 评论 -
linux原始套接字-arp请求与接收
一.概述 以太网的arp数据包结构:arp结构op操作参数:1为请求,2为应答。常用的数据结构如下:1.物理地址结构位于netpacket/packet.h 1 struct sockaddr_ll 2 { 3 unsigned short int sll_转载 2017-07-12 17:27:11 · 1803 阅读 · 0 评论 -
远程调试
在实际的运用中,我们总希望我们的设备有远程调试的功能,这里给出一个远程调试的框架,将调试串口重定向到sock,供参考: if(sock { /* 链接tcp server */ sock = Debug_Com2Net_ConnPeer_FUN();原创 2016-11-15 16:53:31 · 451 阅读 · 0 评论 -
linux 多线程消息广播
最近在工作中遇到了问题一个纠结问题:一个底层通用的模块,在应用层有许多线程使用。该模块大多数情况下都是正常的,模块出问题之后或基于其他考虑需要重启底层模块,底层重启了之后理论上是应用层需要释放当前资源,重新开始应用层业务。 为了实现该目标,当前以使用方式是:底层模块重启前调用每一个应用程接口,通知他们释放当前资源。但感觉这个设计有些缺陷:完全破坏了底层模块的封装完整性。 然后首原创 2017-07-29 12:53:16 · 1035 阅读 · 0 评论 -
参考ethtool写了个Linux设置、获取网卡模式的接口
差不多一个月没写文章了,这期间,主要是搞一些比较复杂的问题,一直被搞,没有搞其它的东西,也就没写出什么东西来。在找问题过程中,上网了解到ethtool这个工具十分强大,以为这个代码很复杂,而恰好领导要求我提供设置网卡信息的接口,于是下了代码,研究了一下,参考了一下,整理了一下。当然文中写的是第一个版本,要是这样的接口提供出去,其它部门的人肯定会有意见的。Linux内核很早就已经加入etht转载 2017-11-11 17:37:14 · 2152 阅读 · 0 评论 -
Linxu文件系统句柄泄露排查
在Linux系统中能够通过ulimit–n查看每一个进程限制的最大句柄数,通过ulimit –HSn 10240改动进程的最大句柄数。当句柄数目达到限制后,就回出现”too many files open”。查看进程占用的句柄数有几种办法:1) 通过cat/proc/pid/fd能够查看进程pid号打开的线程;2) 通过lsof命令如果发现那个文件句柄打开特别多,就可...原创 2019-06-05 11:16:22 · 2335 阅读 · 0 评论 -
子进程关闭从父进程继承来的文件描述符
前一阵子遇到了这么一个问题,父进程创建了子进程,然后父进程退出。子进程第一件事卸载sdcard,结果提示设备资源忙。在子进程中使用fuser命令查看sdcard挂载目录,结果发现子进程的确占用了该目录, 马上就明白了是子进程继承了父进程的文件描述符。同时我联想到一些开发不严谨的程序也经常出现忘记关闭文件描述符的问题。子进程如何关闭父进程的文件描述符呢?这里提供两种方法供参考:方原创 2014-12-01 13:00:10 · 6792 阅读 · 2 评论 -
epoll 使用详解
epoll的接口非常简单,一共就三个函数:1. int epoll_create(int size);创建一个epoll的句柄,size用来告诉内核这个监听的数目一共有多大。这个参数不同于select()中的第一个参数,给出最大监听的fd+1的值。需要注意的是,当创建好epoll句柄后,它就是会占用一个fd值,在linux下如果查看/proc/进程id/fd/,是能够看到这个fd的,所以在转载 2017-01-19 09:15:54 · 397 阅读 · 0 评论 -
linux 客户端 Socket 非阻塞connect编程
开发测试环境:虚拟机CentOS,windows网络调试助手 非阻塞模式有3种用途 1.三次握手同时做其他的处理。connect要花一个往返时间完成,从几毫秒的局域网到几百毫秒或几秒的广域网。这段时间可能有一些其他的处理要执行,比如数据准备,预处理等。 2.用这种技术建立多个连接。这在web浏览器中很普遍. 3.由于程序用se转载 2016-07-01 20:22:54 · 1111 阅读 · 0 评论 -
linux 进程 文件句柄
应用程序在一直使用文件句柄,而不释放文件句柄时,可能导致文件句柄资源耗尽,当文件句柄耗尽自后所用的打开/新建文件函数都会返回错误,open、create、fopen、popen、socket。1、查看系统默认的进程最大文件句柄数(socket也算文件句柄),linux系统默认是1024# ulimit -n10242、查看进程打开的文件句柄step1:查看(原创 2016-06-30 13:52:12 · 3560 阅读 · 0 评论 -
MiniGUI中freetype库的支持
minigui freetype库的支持(矢量字体),以times.ttf字库为例讲解。原创 2015-01-04 16:06:03 · 2145 阅读 · 0 评论 -
C语言中的回调函数实例
如果函数A的指针作为函数B的参数,在函数B中利用该指针调用函数A,则此时的A就是回调函数。 在C语言中一般用typedef来为回调函数定义别名(参数名)。 别名通过宏定义typedef来实现,不是简单的宏替换。可以用作同时声明指针型的多个对象。比如:复制代码 代码如下:char *pa,pb;//pa是一个char型指针,但pb是一个char型字符。我们可以这样来实现转载 2015-01-17 17:11:06 · 651 阅读 · 0 评论 -
libxml2库在嵌入式linux中的应用
在实际的项目开发过程中,往往有这么一个通用的架构:主应用程序,配置文件,和配置文件控制程序。主应用程序往往是根据配置文件内容来运行的,而控制程序是为给人机交互的。 我也是最近想了解一下这种架构方式,于是在网上找了一些关于配置文件相关的信息,最终确认使用xml文件,因为它比较简单、通用、而功能强大。linux+c最终选择了libxml2库。 关于环境搭建十分简单,参考我的上一篇博原创 2015-02-04 13:49:03 · 1349 阅读 · 0 评论 -
守护进程应用,监控应用程序状态
在实际的项目中,运用守护进程(精灵进程)监控我们的应用程序是否异常中断,如果中断则重新启动该应用程序,并以日志文件的形式记录下来。似乎是项目开发中通用的一种技巧。下面是我个人为了实现这一目的,而写的一个简单的demo,没有精心的设计,粗糙的实现了该功能,供菜鸟学习!如果是老鸟,请留下你宝贵的建议!环境:ubuntu应用程序路径:/home/bsj/Desktop/test/aa应用原创 2015-02-02 14:15:43 · 1565 阅读 · 0 评论 -
linux 动态库调用静态库
文件列表:----show1.c----show2.c----show3.c----test.c文件关系:show1.c 和show2.c 生成libshow.a 静态库;show3.c 生成libshow3.so动态库,show3.c调用show1.c和show2.c的API;test.c调用show3.c的API。文件内容如下:文件1:show1.c#i原创 2015-01-13 14:14:26 · 818 阅读 · 1 评论 -
linux线程共享和进程内存的关系
最近在了解线程方面的内容,总觉得对线程共享、线程全局变量、线程局部变量的处理方式有点迷糊,下面从进程和线程的角度分析了内存情况,如有不对之处,各位老鸟请留言加以指正。进程内存分析:1、栈区(stack)— 由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由O原创 2014-12-03 17:06:44 · 5908 阅读 · 2 评论 -
以行为记录项,空格为分隔符的日志文件解析
在实际应用中往往会发现这样一些日志文件,它们以一行表示一个记录项,记录项中的每个字段间以空格来分隔。比如,如下日记文件 name1 sex1 age1 height1 weight1 name2 sex2 age2 height2 weight2 对于该类文件的解析可参考如下代码模块:/*从Line中读取第N个空格的位置成功返回第N个空格位置,失败原创 2014-11-25 21:16:51 · 988 阅读 · 0 评论 -
在内存在查找子串
//在一段内存缓冲中查找指定字符串的位置,从头开始查找,区分大小写//返回第一个找到的位置。//str1 - 内存缓冲的头指针//nLen1 - 内存缓冲长度//str2 - 要查找匹配的字符串bool bcompi(char byA, char byB){ if (byA - byB == 0) { return true;转载 2014-11-04 17:33:44 · 723 阅读 · 0 评论 -
Socket编程中select()的妙用
发信站: 华南网木棉站 (Tue Aug 4 15:43:41 1998), 转信 【 原文由 cpu 所发表 】 用过 WinSock API 网友们知道:WinSock 编程中有一很方便的地方便是其 息驱动机制,不管是底层 API 的 WSAAsyncSelect() 还是 MFC 的异步Socket类: CAsyncSocket,都提供了诸如 FD_ACCEPT、转载 2014-11-20 10:58:37 · 434 阅读 · 0 评论