freeswitch中开发列出所有模块命令
本文章主要是对本人在fs中开发一个命令的时候的一些随想。主要记录一些遇到的问题与一些简答的想法,不具有体系性,望与共勉!
环境
环境名
版本
WIN
WIN10
FS
1.10.0
VS
vs2017
vs中编译代码开发一个模块命令后,需要重新build。
自言自语:点击调试好像没法重新加载代码,重新build很慢,是否有其它方法?只是一个模块,应该是编译这一个模块就可以塞?
干,vs2017中生成里面有重新生成修改的模块。-_-||
用到的函数
switch_xml_open_cfg(const char *file_path, switch_xml_t *node, switch_event_t *params)
这个函数内部调用switch_xml_locate,看其中内容可以发现要求传入文件的名字即可。先就讲到这里,细节后面再说
file_path:需要指定文件的名字,不包括路径。例如: “modules.conf”
node: 声明一个switch_xml_t即可
params: 直接传输NULL
switch_xml_child(switch_ ...
Linux下的Socket编程(一)
Linux环境下的Socket开发,主要讲解socket编程的简单认识以及所需要依赖的库。最后形成一个简单的测试用例
Socket编程认识在Linux环境下,任何内容(驱动,硬件,网络)都被认为是文件。在此种语境下,我们可以像操作文件一样操作Linux中的任何内容。
Linux下文件操作要素
Linux下文件操作首先需要获取到一个关于文件的id(int)。通过此id你就可以对文件进行读与写操作。程序的主要任务就是对数据的读与写。(程序的本质是数据与算法)
Socket操作要素
意思讲解:Socket的意思是“插座”,就是你的程序作为“插头”,插到插座上,只要你们的协议相同那么就可以进行通信。
Socket作为一个特殊的文件,同样会返回一个id(int)用于对其进行操作。
Socket编程涉及函数关于Socket编程的几个函数如socket、bind、connect、listen、accept都位于<sys/socket.h>中
socket函数socket函数用于创建套接字,其原型为:
1int socket(int af, int type, int prot ...
C中的函数
本文主要着重函数的概念,以及在声明、调用上面进行讲解。其中会额外讲解变量的作用范围,其主要也是着眼于函数内。
函数的概念
数学:数学中的函数是指一个数集按照一个指定的法则映射到另一个数集中,其中的法则被称为函数关系式或函数
程序:是指传入输入数据按照一定的规则运算后输出一个有意义的数据,其中我们将一定的运算规则就称为函数。
tips:其中关于函数的理解是本人个人总结,如有错误,还请指导。
函数的声明在C语言中,任何函数的使用必须首先进行声明,否则进行调用。其中max对其进行了声明,声明形式为return_type function_name( parameter list );
12345678910111213141516#include<stdio.h>//声明的形式int main(){ int a=1,b=2; int max(int a,int b); int maxVar = max(a,b); printf("%d",maxVar); return 1;}int max(int a,i ...
C中数组知识回顾
主要回顾C语言中关于数组的定义以及初始化。基础知识如数组用[],初始化值用{}将不会着重讲解。
一维数组一维数组的定义与初始化是二维以及多维的基础。其中重点主要在初始化中。
一维数组的定义1234567891011/** * 一、一维数组,数组的定义,数组的引用,数组的初始化**///1、数组的定义与数组的引用int arr1[10],i;for(i=0;i<sizeof(arr1)/sizeof(int);i++){ printf("arr1 %d ,",arr1[i]);}printf("\n");
一维数组的初始化一维数组的初始化主要有以下三个特点以及一个注意点。特点主要围绕初始化时是否指定数组的长度
初始化指定长度的数组,如果初始化数组不够,全部用零自动填充
初始化一个未指定长度的数组。那么编译器会自动生成{}数字相同的长度
如果指定了长度的数组都初始化为零。可以使用{0}或者{相同长度的零}
注意:c语言的数组不支持动态数字,即必须从初始化开始时都固定,不同通过scanf这一 ...
C中fork函数问题记录-fork输出结果不一致
在测试fork特性的时候,用命令行运行与ide中出现完全不同的效果。单独测试fork函数的时候发现,fork成功,但是它会从main函数开始运行。特此记录!
环境
华为云centos7
编程ide:vscode+remote
编译环境:gcc version 4.8.5 20150623 (Red Hat 4.8.5-44)
代码与结果123456789101112131415161718#include <unistd.h> #include <stdio.h> int main(void) { int i=0; printf("i son/pa ppid pid fpid\n"); /id指当前进程的父进程pid //pid指当前进程的pid, //fpid指fork返回给当前进程的值 for(i=0;i<2;i++){ pid_t fpid=fork(); if(fpid==0) printf(&q ...
C语言中__attribute__的用法
@TODO 后续添加
引用C语言中__attribute__的用法
C 语言中的字节对齐
TODO
C语言关键字学习
主要是熟悉 C 语言中的有关除了基础语法的外的关键字,并讲解一般的使用场景!
关键字语义
关键字名
语义
#define
定义一个预处理宏
#undef
取消宏的宏
#if
编译预处理中的条件命令,相当于 C 语法中的 if 语句
#ifdef
判断某个宏是否为定义,若已定义,执行随后的语句
#ifndef
与#ifdef相反,判断某个宏是否未被定义
#elif
若#if, #ifdef, #ifndef或前面的#elif条件不满足,则执行#elif之后的语句,相当于C语法中的 else-if
#else
与#if, #ifdef, #ifndef对应, 若这些条件不满足,则执行#else之后的语句,相当于C语法中的else
#endif
#if, #ifdef, #ifndef这些条件命令的结束标志.
defined
与#if, #elif配合使用,判断某个宏是否被定义
#ifndef的用法#ifndef的语义是判断某个宏是否未被定义。起到的效果是防止一个源文件两次包含同一个头文件,而不是防止两个源文件包含同一个头文件。
使用场景:
在 ...
C 语言变量与参数平台差异
本文主要讲解本人在开发过程中遇到的一些不同平台的差异的问题,已经使用的注意事项
BUFSIZ此参数定义在stdio.h中,在 win 中有 512 个字节,在 linux 中有 8192 个字节。
Win 12/* Buffered I/O macros */#define BUFSIZ 512
Linux 12345678910// stdio.h#ifndef BUFSIZ# define BUFSIZ _IO_BUFSIZ#endif// libio.h#define _IO_BUFSIZ _G_BUFSIZ// _G_config.h#define _G_BUFSIZ 8192
__VA_ARGS__
__VA_ARGS__ 是一个可变参数的宏,很少人知道这个宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有 gcc 支持。
实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个点)。
Linux 123456789#include<stdio.h>#define print_variable(...) printf(__VA_ARG ...
C语言面试题简单理解
局部变量能否和全局变量重名?
答:能,局部会屏蔽全局。要用全局变量,需要使用”::” ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。
注意:根据测试,这里说的应该是命名空间概念。而 C 语言是没有命名空间的。