当前位置: 技术问答>linux和unix
[Simple Shell] 检查成果,顺便发帖混个脸熟:)
来源: 互联网 发布时间:2016-07-20
本文导语: 工作需要,想要一个应用程序的shell 可以用来调试应用程序 (直接在shell 内输入函数的名字和参数就可以调用应用程序内的函数。) 于是写了一个简单的demo, 之所以叫demo 是因为, 本来可以通过n...
工作需要,想要一个应用程序的shell 可以用来调试应用程序 (直接在shell 内输入函数的名字和参数就可以调用应用程序内的函数。)
于是写了一个简单的demo, 之所以叫demo 是因为, 本来可以通过nm 命令导出的符号表来生成shell 内函数的数组, 而不是手动注册各个函数, 但是本人能力有限, 没有完成, 所以只有自己手动注册相关的函数了(demo 里注册了两个函数 XandY(int x, int y) 和PrintHex(char *bufP)), OK 功能描述至此, 下面粘代码, 大侠看了不要笑话~, 有改动意见, 敬请拍砖
shell.h
shell.c 见一楼~
于是写了一个简单的demo, 之所以叫demo 是因为, 本来可以通过nm 命令导出的符号表来生成shell 内函数的数组, 而不是手动注册各个函数, 但是本人能力有限, 没有完成, 所以只有自己手动注册相关的函数了(demo 里注册了两个函数 XandY(int x, int y) 和PrintHex(char *bufP)), OK 功能描述至此, 下面粘代码, 大侠看了不要笑话~, 有改动意见, 敬请拍砖
shell.h
/*
** Copyright (c) 2009 Michael .
**
** Project: Simple shell
** File: shell.h
** Author: Michael
** Date: 07/22/2009
**
** Purpose:
** Header file for shell.c.
*/
#ifndef SHELL_H
#define SHELL_H
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
/* Include files. */
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* Macro constant definitions. */
#define FUNC_NAME_LENGTH_MAX 0x80
#define FUNC_DESC_LENGTH_MAX 0x100
#define FUNC_DB_ENTRY_MAX 0x80
#define ARGS_COUNTER_MAX 0x0A
#define INPUT_BUF_LENGTH 0x400
#define SHELL_PROMPT "MichaeL ^-^ > "
#define SHELL_HELP_CMD_1 "help"
#define SHELL_HELP_CMD_2 "HELP"
#define SHELL_QUIT_CMD_1 "quit"
#define SHELL_QUIT_CMD_2 "QUIT"
#define SHELL_QUIT_CMD_3 "exit"
#define SHELL_QUIT_CMD_4 "EXIT"
/* Type definitions. */
typedef unsigned char uint8; /* 8-bit unsigned value. */
typedef unsigned short uint16; /* 16-bit unsigned value. */
typedef unsigned int uint32; /* 32-bit unsigned value. */
typedef signed char sint8; /* 8-bit signed value. */
typedef signed short sint16; /* 16-bit signed value. */
typedef signed int sint32; /* 32-bit signed value. */
typedef int (*funcPtr)();
typedef struct
{
char name[FUNC_NAME_LENGTH_MAX];
funcPtr value;
char description[FUNC_DESC_LENGTH_MAX];
} tSymbolEntry;
/* External function declarations. */
/* Macro API definitions. */
/* Global variable declarations. */
#ifdef __cplusplus
} /* extern "C" */
#endif /* __cplusplus */
#endif /* SHELL_H */
shell.c 见一楼~
|
其实有不少现成的库可以使用的,不需要重新自己去实现shell的功能。当然自己当研究技术例外。
|
呵呵。
|
没看明白!
可以调试程序?还是仅仅是一个简单的shell?
可以调试程序?还是仅仅是一个简单的shell?
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。