} } }

    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
    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: