asterisk源码解析(main函数)
添加时间:2013-5-15 点击量:
文件:main目次下的asterisk.c文件
1、代码片段:
/ if the progname is rasterisk consider it a remote console /
if (argv[0] && (strstr(argv[0], rasterisk)) != NULL) {
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
}
...
case r:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
break;
申明:
在终端运行rasterisk号令,相当于运行asterisk -r,即asterisk的长途连接。
2、代码片段:
if (getenv(HOME))
snprintf(filename, sizeof(filename), %s/.asterisk_history, getenv(HOME));
申明: rasterisk(或者asterisk -r)中运行的号令会记录在用户的home目次下的.asteriskhistory文件中(比如:/root/.asteriskhistory)
asterisk启动参数
代码片段:
case B: / Force black background /
ast_set_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND);
ast_clear_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND);
break;
申明: -B 强迫以黑色靠山运行,相当于将文件/etc/asterisk/asterisk.conf中的forceblackbackground设置为yes
代码片段:
case X:
ast_set_flag(&ast_options, AST_OPT_FLAG_EXEC_INCLUDES);
break;
申明: -X 可以在设备文件中设备#exec 之类的指令(比如:#exec /tmp/shellTest.sh),相当于将在文件/etc/asterisk/asterisk.conf中设备execincludes = yes
代码片段:
case C:
ast_copy_string(cfg_paths.config_file, optarg, sizeof(cfg_paths.config_file));
ast_set_flag(&ast_options, AST_OPT_FLAG_OVERRIDE_CONFIG);
break;
申明: -C file 应用file调换/etc/asterisk/asterisk.conf文件初始化法度,这里的file应为绝对路径。
代码片段:
case c:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_COLE);
break;
申明: -c 以console体式格式运行,相当于将在文件/etc/asterisk/asterisk.conf中设备console = yes
代码片段:
case d:
option_debug++;
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-d 或者 -ddd
调试模式,d的个数即为调试级别,比如-ddd相当于在文件/etc/asterisk/asterisk.conf中设备debug = 3
代码片段:
case e:
if ((sscanf(&optarg[1], %30ld, &option_minmemfree) != 1) || (option_minmemfree < 0)) {
option_minmemfree = 0;
}
break;
申明:
-e memory
相当于文件/etc/asterisk/asterisk.conf中设备 minmemfree = memory
当体系中可用内存低于设定的memory值时,asterisk停止接管新的呼唤
代码片段:
case F:
ast_set_flag(&ast_options, AST_OPT_FLAG_ALWAYS_FORK);
break;
申明:
-F
相当于在文件/etc/asterisk/asterisk.conf中配alwaysfork = yes
代码片段:
case f:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-f
相当于在文件/etc/asterisk/asterisk.conf中配nofork = yes
代码片段:
case G:
rungroup = ast_strdupa(optarg);
break;
申明:
-G group
调用指定组运行
代码片段:
case g:
ast_set_flag(&ast_options, AST_OPT_FLAG_DUMP_CORE);
break;
申明:
-g
故障转储相干
代码片段:
case h:
show_cli_help();
exit(0);
申明:
-h
显示帮助信息
代码片段:
case I:
ast_set_flag(&ast_options, AST_OPT_FLAG_INTERNAL_TIMING);
break;
申明: -I 若是DAHDI计时器是可用则使内部按时
代码片段:
case i:
ast_set_flag(&ast_options, AST_OPT_FLAG_INIT_KEYS);
break;
申明:
-i
在启动时初始化加密密钥
代码片段:
case L:
if ((sscanf(optarg, %30lf, &option_maxload) != 1) || (option_maxload < 0.0)) {
option_maxload = 0.0;
}
break;
申明:
-L <load>
在拒绝新的德律风之前限制最大均匀负载
代码片段:
case M:
if ((sscanf(optarg, %30d, &option_maxcalls) != 1) || (option_maxcalls < 0)) {
option_maxcalls = 0;
}
break;
申明:
-M <value>
限制德律风的最大数量为指定的值
代码片段:
case m:
ast_set_flag(&ast_options, AST_OPT_FLAG_MUTE);
break;
申明:
-m
樊篱在把握台输出
代码片段:
case n:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_COLOR);
break;
申明: -n 封闭彩色输出功能,比如:asterisk -n
代码片段:
case p:
ast_set_flag(&ast_options, AST_OPT_FLAG_HIGH_PRIORITY);
break;
申明:
-p
作为伪及时线程运行
代码片段:
case q:
ast_set_flag(&ast_options, AST_OPT_FLAG_QUIET);
break;
申明:
-q
安适模式(按捺输出)
代码片段:
case R:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE | AST_OPT_FLAG_RECONNECT);
break;
申明:
-R
连接本机的asterisk办事器,断开后会从头连接
代码片段:
case r:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
break;
申明:
-r
连接本机的asterisk办事器
代码片段:
case s:
remotesock = ast_strdupa(optarg);
break;
申明:
-s <socket-file>
经由过程socket连接到asterisk,和r参数一路应用时有效
代码片段:
case T:
ast_set_flag(&ast_options, AST_OPT_FLAG_TIMESP);
break;
申明:
-T
在CLI输出中显示时候
代码片段:
case t:
ast_set_flag(&ast_options, AST_OPT_FLAG_CACHE_RECORD_FILES);
break;
申明: -t Record soundfiles in /var/tmp and move them where they belong after they are done
代码片段:
case U:
runuser = ast_strdupa(optarg);
break;
申明:
-U <user>
以用户<user>体式格式运行
代码片段:
case V:
show_version();
exit(0);
申明:
-V
显示版本信息
代码片段:
case v:
option_verbose++;
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-v
多个v,显示更多信息
代码片段:
case W: / White background /
ast_set_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND);
ast_clear_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND);
break;
申明:
-W
调剂终端色彩
代码片段:
case x:
ast_set_flag(&ast_options, AST_OPT_FLAG_EXEC | AST_OPT_FLAG_NO_COLOR);
xarg = ast_strdupa(optarg);
break;
申明:
-x <cmd>
履行CLI指令,和r参数一路应用,比如:asterisk -rx core show channels
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
文件:main目次下的asterisk.c文件
1、代码片段:
/ if the progname is rasterisk consider it a remote console /
if (argv[0] && (strstr(argv[0], rasterisk)) != NULL) {
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
}
...
case r:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
break;
申明:
在终端运行rasterisk号令,相当于运行asterisk -r,即asterisk的长途连接。
2、代码片段:
if (getenv(HOME))
snprintf(filename, sizeof(filename), %s/.asterisk_history, getenv(HOME));
申明: rasterisk(或者asterisk -r)中运行的号令会记录在用户的home目次下的.asteriskhistory文件中(比如:/root/.asteriskhistory)
asterisk启动参数
代码片段:
case B: / Force black background /
ast_set_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND);
ast_clear_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND);
break;
申明: -B 强迫以黑色靠山运行,相当于将文件/etc/asterisk/asterisk.conf中的forceblackbackground设置为yes
代码片段:
case X:
ast_set_flag(&ast_options, AST_OPT_FLAG_EXEC_INCLUDES);
break;
申明: -X 可以在设备文件中设备#exec 之类的指令(比如:#exec /tmp/shellTest.sh),相当于将在文件/etc/asterisk/asterisk.conf中设备execincludes = yes
代码片段:
case C:
ast_copy_string(cfg_paths.config_file, optarg, sizeof(cfg_paths.config_file));
ast_set_flag(&ast_options, AST_OPT_FLAG_OVERRIDE_CONFIG);
break;
申明: -C file 应用file调换/etc/asterisk/asterisk.conf文件初始化法度,这里的file应为绝对路径。
代码片段:
case c:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_COLE);
break;
申明: -c 以console体式格式运行,相当于将在文件/etc/asterisk/asterisk.conf中设备console = yes
代码片段:
case d:
option_debug++;
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-d 或者 -ddd
调试模式,d的个数即为调试级别,比如-ddd相当于在文件/etc/asterisk/asterisk.conf中设备debug = 3
代码片段:
case e:
if ((sscanf(&optarg[1], %30ld, &option_minmemfree) != 1) || (option_minmemfree < 0)) {
option_minmemfree = 0;
}
break;
申明:
-e memory
相当于文件/etc/asterisk/asterisk.conf中设备 minmemfree = memory
当体系中可用内存低于设定的memory值时,asterisk停止接管新的呼唤
代码片段:
case F:
ast_set_flag(&ast_options, AST_OPT_FLAG_ALWAYS_FORK);
break;
申明:
-F
相当于在文件/etc/asterisk/asterisk.conf中配alwaysfork = yes
代码片段:
case f:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-f
相当于在文件/etc/asterisk/asterisk.conf中配nofork = yes
代码片段:
case G:
rungroup = ast_strdupa(optarg);
break;
申明:
-G group
调用指定组运行
代码片段:
case g:
ast_set_flag(&ast_options, AST_OPT_FLAG_DUMP_CORE);
break;
申明:
-g
故障转储相干
代码片段:
case h:
show_cli_help();
exit(0);
申明:
-h
显示帮助信息
代码片段:
case I:
ast_set_flag(&ast_options, AST_OPT_FLAG_INTERNAL_TIMING);
break;
申明: -I 若是DAHDI计时器是可用则使内部按时
代码片段:
case i:
ast_set_flag(&ast_options, AST_OPT_FLAG_INIT_KEYS);
break;
申明:
-i
在启动时初始化加密密钥
代码片段:
case L:
if ((sscanf(optarg, %30lf, &option_maxload) != 1) || (option_maxload < 0.0)) {
option_maxload = 0.0;
}
break;
申明:
-L <load>
在拒绝新的德律风之前限制最大均匀负载
代码片段:
case M:
if ((sscanf(optarg, %30d, &option_maxcalls) != 1) || (option_maxcalls < 0)) {
option_maxcalls = 0;
}
break;
申明:
-M <value>
限制德律风的最大数量为指定的值
代码片段:
case m:
ast_set_flag(&ast_options, AST_OPT_FLAG_MUTE);
break;
申明:
-m
樊篱在把握台输出
代码片段:
case n:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_COLOR);
break;
申明: -n 封闭彩色输出功能,比如:asterisk -n
代码片段:
case p:
ast_set_flag(&ast_options, AST_OPT_FLAG_HIGH_PRIORITY);
break;
申明:
-p
作为伪及时线程运行
代码片段:
case q:
ast_set_flag(&ast_options, AST_OPT_FLAG_QUIET);
break;
申明:
-q
安适模式(按捺输出)
代码片段:
case R:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE | AST_OPT_FLAG_RECONNECT);
break;
申明:
-R
连接本机的asterisk办事器,断开后会从头连接
代码片段:
case r:
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK | AST_OPT_FLAG_REMOTE);
break;
申明:
-r
连接本机的asterisk办事器
代码片段:
case s:
remotesock = ast_strdupa(optarg);
break;
申明:
-s <socket-file>
经由过程socket连接到asterisk,和r参数一路应用时有效
代码片段:
case T:
ast_set_flag(&ast_options, AST_OPT_FLAG_TIMESP);
break;
申明:
-T
在CLI输出中显示时候
代码片段:
case t:
ast_set_flag(&ast_options, AST_OPT_FLAG_CACHE_RECORD_FILES);
break;
申明: -t Record soundfiles in /var/tmp and move them where they belong after they are done
代码片段:
case U:
runuser = ast_strdupa(optarg);
break;
申明:
-U <user>
以用户<user>体式格式运行
代码片段:
case V:
show_version();
exit(0);
申明:
-V
显示版本信息
代码片段:
case v:
option_verbose++;
ast_set_flag(&ast_options, AST_OPT_FLAG_NO_FORK);
break;
申明:
-v
多个v,显示更多信息
代码片段:
case W: / White background /
ast_set_flag(&ast_options, AST_OPT_FLAG_LIGHT_BACKGROUND);
ast_clear_flag(&ast_options, AST_OPT_FLAG_FORCE_BLACK_BACKGROUND);
break;
申明:
-W
调剂终端色彩
代码片段:
case x:
ast_set_flag(&ast_options, AST_OPT_FLAG_EXEC | AST_OPT_FLAG_NO_COLOR);
xarg = ast_strdupa(optarg);
break;
申明:
-x <cmd>
履行CLI指令,和r参数一路应用,比如:asterisk -rx core show channels
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。