Chinaunix首页 | 论坛 | 博客
  • 博客访问: 47184
  • 博文数量: 19
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 147
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-13 14:56
个人简介

待到山花烂漫时,依旧是那些经典在微笑 ~__~

文章分类
文章存档

2015年(17)

2014年(2)

我的朋友

分类: 嵌入式

2015-02-09 16:36:57

      在common下的main.c 的main_loop()中有以下代码:

点击(此处)折叠或打开

  1. s = getenv ("bootcmd");0.获取引导内核命令
  2. if (bootdelay >= 0 && s && !abortboot (bootdelay)) {//1. 通过函数abortboot判断是否按下任意键
  3.         puts("did not push ---\n");//2. 没有按下任意键,正常引导内核
  4. #ifdef CONFIG_AUTOBOOT_KEYED
  5.         int prev = disable_ctrlc(1);    /* disable Control C checking */
  6. #endif

  7. #ifndef CFG_HUSH_PARSER
  8.         run_command (s, 0);
  9. #else
  10.         parse_string_outer(s, FLAG_PARSE_SEMICOLON |
  11.                  FLAG_EXIT_FROM_LOOP);//3.使用了hush方式,执行此方法。hush方式做了管道和string方面的处理,细节未探究
  12. #endif

  13. #ifdef CONFIG_AUTOBOOT_KEYED
  14.         disable_ctrlc(prev);    /* restore Control C checking */
  15. #endif
  16.     }

    parse_string_outer---》setup_string_in_str(将执行命令保存结构体struct in_str中)----》parse_stream_outer
    (调用parse_stream:
         1.保存执行命令的语法分析结果,存于struct p_context.
         2.更新全局变量char *ifs和map[256]
    )---》执行parse_stream。返回0代表正常---》执行run_list--->执行run_list_real---》执行run_pipe_real---》查询命令。依命令构造实现操作   

点击(此处)折叠或打开

  1. if ((cmdtp = find_cmd(child->argv[i])) == NULL) {
  2.                 printf ("Unknown command '%s' - try 'help'\n", child->argv[i]);
  3.                 return -1;    /* give up after bad command */
  4.             } else {
    =================================================================================
    参考文章:http://blog.csdn.net/tankai19880619/article/details/15812769


阅读(475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~