shell原理和问答机制引入
来源:互联网 发布:天津网络推广公司 编辑:程序博客网 时间:2024/06/15 22:11
《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
(1).
shell,
壳,
用户接口,
一种实现和调用分离的实现,
操作界面,是操作系统提供的shell,
linux中脚本编程,windows中的批处理都是shell编程,
cmdline是一种shell,GUI也是一种shell,
举个例子,创建一个文件,适合使用GUI,但是创建1000个文件呢?这就适合使用cmdline了,
cmdline运行原理,
while(1)
{
消息接受;
消息解析;
命令执行;
}
uboot是一个裸机程序构成的shell,
人机交互必须要有shell,
家用路由器配置界面,就是路由器内置的一个嵌入式web服务器形式的shell,
(2).
版本1#include <stdio.h>#define MAX_LINE_LENGTH256//命令行长度int main( void ){char str[ MAX_LINE_LENGTH ]; //用来存放用户输入的命令内容while( 1 ){//打印命令行提示符,这里不要加换行符哦~printf("YQ");memset( str, 0, sizeof( str ) );//获取用户输入的命令,scanf("%s", str );//解析用户输入的命令,暂时没有//处理用户输入命令,printf(" %s \n", str);}return 0;}版本2,定义命令集,#include <stdio.h>#define MAX_LINE_LENGTH256//命令行长度#define MAX_CMD_NUM 3//最多支持的命令数量//定义一些标准命令#defineled "led"#define lcd"lcd"#definepwm"pwm"char g_cmdset[ MAX_CMD_NUM ][ MAX_LINE_LENGTH];void init_set( void );int main( void ){int i = 0;char str[ MAX_LINE_LENGTH ]; //用来存放用户输入的命令内容init_cmd_set();while( 1 ){//打印命令行提示符,这里不要加换行符哦~printf("YQ");memset( str, 0, sizeof( str ) );//获取用户输入的命令,scanf("%s", str );//解析用户输入的命令,暂时没有for( i = 0; i<MAX_CMD_NUM; i++ ){if(!strcmp( str, g_cmdset[ i ] ) ); //此处比较相同返回0,所以要取反{//相等,就说明找到了命令,去执行命令所对应的命令,//处理用户输入命令,printf(" %s 是合法的\n", str);break;}}if( i>= CMD_NUM ){//说明没有找到这个命令printf("%s不是一个合法命令,请重新输入\n",str );}}return 0;}//初始化命令列表static void init_set( void ){memset( g_cmdset, 0, sizeof(g_cmdset) );strcpy( g_cmdset[ 0 ], led );strcpy( g_cmdset[ 1 ], lcd );strcpy( g_cmdset[ 2 ], pwm );}
(3).
移植到开发板上,
项目源自uart那章,
涉及到自己写stdio.c,
包含各种输入输出的函数,
由于标准库中的输入输出不是输入到串口中的,所以我们需要自己写,哪怕具体实现一样,
回车在windows和linux中不一样,
注意3个功能的细节,
1.命令回显,
2.按回车键问题,
3.按退格键问题,
start.s中,由于代码简单,不需要重定位,
(4).
//cmd.c,命令解析,
int cmd_parser( char *str );//解析命令,
void cmd_exec( char *str ); //执行命令
涉及很多的字符串函数,
可以直接从内核中学习函数的实现,比如字符串,
(5).
添加第一个命令,
led是一级命令,on,off是二级命令,
0 0
- shell原理和问答机制引入
- iOS 引入framework的常见问题和原理
- hadoop原理和机制
- 游戏原理和机制
- LocalBroadcastManager原理和机制
- logrotate机制和原理
- logrotate机制和原理
- logrotate机制和原理
- 数据库原理常见问答
- ruby引入shell命令
- binder的机制和原理
- 反射原理机制和应用
- RunLoop 原理和核心机制
- binder的机制和原理
- RunLoop 原理和核心机制
- RunLoop核心原理和机制
- RunLoop 原理和核心机制
- RunLoop 原理和核心机制
- 指针和引用的差别
- java (String)强转 和 toString() 的区别
- apache.commons.lang 包 StringUtils 的 isBank() 方法认知
- 关于Android开发中的证书和密钥等问题
- poj 1195 Mobile phones(二维树状数组)
- shell原理和问答机制引入
- cf#221-div1-D - Tree and Queries-dfs序+莫队算法
- 简易版 文件上传UpdateFile(Struts2版)
- HBase Rowkey的散列与预分区设计
- 2016年武汉科技大学邀请赛网络赛 F题
- QTableWidget使用总结
- db2 常用sql
- <html>img、map、area
- JAVA程序员一定知道的优秀第三方库(2016版)