思路
1:分割字符串,提取信息2:在子进程中利用dup2命令按需要将标准输入输出重定向为指定的输入输出来源
代码
#include#include #include #include #include #include #include char op[100],t[100],p[100],r[100],q[100]; int st[10]; char *argv[10]; //把命令按空格划分 int argc=0; //命令以空格分割后个单词个数 char *input; //输入地址,若无重定向,默认为NULL,若重定向了,则为重定向地址 char *output;//输出的地址,若无重定向,默认为NULL,若重定向了,则为重定向的地址 int mode=0; //如果重定向了输出,mode为0表示覆盖输出,为1表示追加输出 void parse_command(char *command) { //把输入的命令串处理“分割”,提取有用信息 //init memset(st,0,sizeof(st)); mode=0; input=NULL; output=NULL; //分割字符串 char *ptr; int i=0; ptr=NULL; ptr=strtok(command," "); while(ptr) { argv[i]=ptr; ++i; ptr=strtok(NULL," "); } argv[i]=NULL; argc=i; //遍历所有单词,查找重定向 for(int i=1;i


