📄 global.h
字号:
/******************************************************************************/
/*全局常量声明*/
#define PIPENUM 10
#define HISNUM 10
#define PARANUM 11
#define BUFSIZE 100
#define NO_PIPE -1
#define NO_IO -1
#define FD_READ 0
#define FD_WRITE 1
#define SIMPLE_CMD -1
#define REDIRECT_CMD 0
#define PIPE_CMD 1
/******************************************************************************/
/*全局结构声明*/
/**命令构造结构**/
typedef struct CmdStr
{
char *cmd;
char *filename;
char *para[PARANUM];
int io_flag;
}CmdStr;
/**历史记录存储结构**/
typedef struct HistoryRecord
{
int start;
int end;
int p_len[HISNUM];
CmdStr cList[HISNUM];
CmdStr pList[HISNUM][PIPENUM];
}HistoryRecord;
/**jobs命令结点**/
typedef struct JobsNode
{
pid_t pid;
CmdStr cStr;
char state[8];
struct JobsNode *link;
}JobsNode;
/******************************************************************************/
/*全局变量声明*/
CmdStr cmdStr;
CmdStr pipeStr[PIPENUM];
HistoryRecord hRec;
JobsNode *head,*end;
char *envpath[10],buf[BUFSIZE],*input=NULL;
pid_t pid1=0;
int sig_flag=0,sig_z=0;
int cmd_flag=SIMPLE_CMD; //普通命令为-1,重定向为0,管道为1
int io_flag=NO_IO; //无重定向为-1,重写向读入为0,重定向写出为1
int is_back=0; //是否为后台命令,是则为1,非则为0
int pipe_len=0; //管道命令中含有的命令条数
/******************************************************************************/
/*声明程序中用到的函数*/
/**词法分析和语法**/
void lex(); //词法分析器
void yacc(); //语法分析器
/**工具函数**/
void init(); //初始化环境变量
void getEnvironment(int,char *); //初始化查找路径
int getLine(int,char *); //读取一行
void printCmd(CmdStr); //根据命令结构打印一条命令
void mallocSpace(CmdStr *); //为命令结构体中相应字段分配空间
void freeSpace(CmdStr *); //释放命令结构体占用的空间
int isFounded(char *); //查找命令
void setFlag(); //将标志位置1
void addHistory(CmdStr); //记录history命令
void addNode(CmdStr,int); //向jobs命令的链表中增加节点
void delNode(int,siginfo_t *); //从jobs命令的链表中删除节点
/**命令解析**/
void redirect(); //重定向命令的处理
int pipel(); //管道命令的处理
void history_cmd(); //显示history命令
void cd_cmd(char *); //处理cd命令
void jobs_cmd(); //处理jobs命令
void bg_cmd(int); //处理bg命令
void fg_cmd(int); //处理fg命令
void ctrl_z_cmd(); //处理用户按下ctrl+z命令
/******************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -