
语言: C
文章平均质量分 85
北雨南萍
长期专注于实时音视频通信技术、音视频处理技术,包括基于webrtc的音视频通信解决方案,基于ffmpeg的媒体处理解决方案。
展开
-
linux下 GDB 调试动态链接库
> gdb <你的可执行程序>(gdb) b main # 设置入口断点(gdb) r [可执行程序的命令行参数] # 启动调试(gdb) load <要调试的动态库, 如 test.so> # 将动态库加载入内存(gdb) dir <要调试的动态库的源码路径, 如 ./src>(gdb) sharedlibrary <要调试的动态库> # 将动态库的符号读入gdb,为了你能找到变量和函数名(gdb)...原创 2020-08-04 10:25:23 · 7711 阅读 · 0 评论 -
gtest应用指南
前言gtest是Google的开源C++单元测试框架,是遵循 New BSD License (可用作商业用途)的开源项目。google内部的大多数C++代码都已经使用这个测试框架进行单测,知名的使用gtest进行测试的项目有chromium , webrtc, quic等。gtest 可以支持绝大多数大家所熟知的平台。Gtest的使用较为方便,它可以自动记录下所有定义好...原创 2020-04-13 12:59:24 · 925 阅读 · 0 评论 -
回调函数原理及应用实例
1. 什么是回调 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用, 是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调, 是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用, 是一种类似消息或事件的机制,不过它的调用方向刚好相反, 接原创 2018-01-14 23:34:56 · 20256 阅读 · 0 评论 -
GLib库安装与简析
GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。一、GLib原创 2015-08-14 14:50:59 · 6530 阅读 · 0 评论 -
GObject对象系统
GObject对象系统简单的说,GObject对象系统是一个建立在GLIB基础上的,用C语言完成的,具有跨平台特色的、灵活的、可扩展的、非常容易映射到其它语言的面向对象的框架。如果你是一个C语言的执着的追随者,你没有理由不研究一下它。NOTE:glib库是Linux平台下最常用的C语言函数库,它具有很好的可移植性和实用性。glib是Gtk +库和Gnome的基础。g转载 2015-07-12 18:02:53 · 1947 阅读 · 0 评论 -
命令行解析与程序开启后台模式运行
一个命令行解析与程序开启后台模式运行的示例程序。闲言少述,直接上代码:/* Parse command parameters * * by Hank * 2015/5/27 */#include #include #include #include #include #include #include #include原创 2015-05-29 11:09:05 · 1050 阅读 · 0 评论 -
linux下C语言实现程序时间测试
#include#include#include#include#include#include main(int argc,char * args[]){ long start_sec,end_sec,start_usec,end_usec; struct timeval tv; double duration; getti原创 2014-04-15 11:47:56 · 1033 阅读 · 0 评论 -
linux C函数之时间函数
时间函数函数分类:1. 设置时间: settimeofday, tzset2. 获取时间: time, ftime, gettimeofday3. 时间格式转换: mktime, strftime; gmtime, localtime; asctime, ctime4. 其他: clock, difftime1. asctime: 将时间和日期以字符串格式表示头文件转载 2013-11-30 09:51:02 · 1284 阅读 · 0 评论 -
linux下动态链接库入门
//dll.c#includevoid myprint(char *a){ printf(a);}编译生成dll.so动态链接库文件:#gcc -o dll.so -shared dll.c//main.c#includeint main(){void *pHandler = dlopen("./dll.so" ,RTLD_N转载 2013-06-13 14:07:18 · 838 阅读 · 0 评论 -
C下如何实现printf在同一行打印,如安装程序进程显示
#include #include char well[11] = " ";int i = 0;for(i = 0; i { well[i] = '#'; printf("\r%s %d%%",well,(i+1)*10); // /r是回车的转义符,目的是回到行首 fflush(stdout);转载 2013-05-08 10:43:41 · 6424 阅读 · 0 评论 -
linux下错误的捕获:errno和strerror的使用
经常在调用linux 系统api 的时候会出现一些错误,比方说使用open() write() creat()之类的函数有些时候会返回-1,也就是调用失败,这个时候往往需要知道失败的原因。这个时候使用errno这个全局变量就相当有用了。在程序代码中包含 #include ,然后每次程序调用失败的时候,系统会自动用用错误代码填充errno这个全局变量,这样你只需要读err转载 2013-05-04 12:20:15 · 890 阅读 · 0 评论 -
命令行参数解析精粹
1. C语言版用到getopt_long这个函数, 代码如下:/****************************************************************************** * \File * main.c * \Brief * * \Author * Hank * \Created date *原创 2013-03-14 12:59:45 · 1177 阅读 · 0 评论 -
linux的sleep()和usleep()的使用和区别
函数名: sleep头文件: #include // 在VC中使用带上头文件 #include // 在gcc编译器中,使用的头文件因gcc版本的不同而不同功 能: 执行挂起指定的秒数语 法: unsigned sleep(unsigned seconds);示例:#include #includeint main(){ i原创 2013-03-08 17:16:46 · 4973 阅读 · 0 评论 -
Linunx的sleep,usleep,select,nonasleep对比与应用
函数名: sleep头文件: #include // 在VC中使用带上头文件 #include // 在gcc编译器中,使用的头文件因gcc版本的不同而不同功 能: 执行挂起指定的秒数语 法: unsigned sleep(unsigned seconds);示例:#include #includeint main(){ i原创 2013-03-08 17:18:00 · 140874 阅读 · 3 评论 -
Windows Linux可兼容版变长参数的实例程序
自己写的一个可变长参数的例子程序。采用了Linux Windows可兼容版本函数。main.c/* * This project is implemented for testing variable-argument */#include stdio.h>#include stdlib.h>#include "log.h"FILE *fp_原创 2013-02-23 21:38:26 · 809 阅读 · 0 评论 -
命令行参数解析合集
linux下写服务端程序免不了用到命令行参数,这里我总结下C语言、bash脚本、python和go语言中的使用方法,也方便我以后查阅。这里我主要用的是getopt这个函数,首先看看c语言中的定义。头文件:#include函数定义:int getopt(int argc,char * const argv[ ],const char * optstring); ext原创 2013-03-06 10:09:03 · 1066 阅读 · 0 评论 -
ISO C90 forbids mixed declarations and code 警告
ISO C90 forbids mixed declarations and code 警告 变量定义之前有任何一条非变量定义的语句(注意:语句是会带分号的)都会引起这个警告! 将非变量的定义语句移到变量定义之后 或 将变量定义移到函数开始处原创 2013-03-05 14:54:53 · 1418 阅读 · 0 评论