程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> asterisk源碼分析(main函數)

asterisk源碼分析(main函數)

編輯:C++入門知識

文件: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_CONSOLE);
    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_TIMESTAMP);
    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'

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved