免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1498 | 回复: 2
打印 上一主题 下一主题

模拟shell的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-01 20:48 |只看该作者 |倒序浏览
//程序有错,大侠们帮改改,不胜感激

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/stat.h>
#define MAX 1024

/*字符串分析函数
参数1  buf --源字符串
参数2 args--解析后的字符串数组首址
返回值--解析后的字符串个数
*/
int parse (char *buf, char **args)
{
     int num=0;
     while (*buf != '\0')
     {
            while((* buf ==' ')||(* buf == '\t'||(*buf == '\n')))
                *buf++ = '\0'; //该循环是定位到命令中每个字符串的第一个非空的字符
            *args++ = buf;   //将找到的非空字符串 依次赋值给args[i]。
              ++num;
            
            while ((*buf!='\0')&&(* buf!=' ')&&(* buf!= '\t') && (*buf!= '\n'))//正常的字母就往后移动,直至定位到非空字符后面的第一个空格。
                buf ++;
     }
    *args = '\0';
    return num;
}
main(int argc ,char *argv[])
{
/*循环进行以下过程:
   (1)输出命令提示符如两个%
   (2)使用fgets获取用户输入
   (3)解析字符串
   (4)判断用户的输入是否代表结束
       是则退出
       否则创建子进程
                 子进程调用execvp执行用户输入的命令
                 父进程等待子进程退出后输出命令提示符
    进行下一次循环过程
*/
        char src[MAX];
        char *dest[100];
        int count;

        do{
                puts("请输入Linux系统命令");
                printf(">");
                fgets(src,MAX,stdin);
                if(src[0]=='*')
                        break;
                else{
                        count=parse(src,dest);
                        if(fork())
                              execvp(src,dest);
                        else{
                                printf("end\n");
                                wait(NULL);
                       }

                }               
               
                wait(NULL);               


        }while(1);

}

论坛徽章:
0
2 [报告]
发表于 2008-11-01 21:07 |只看该作者
出啥错了都不说说?

论坛徽章:
0
3 [报告]
发表于 2008-11-01 21:11 |只看该作者
empty character constant
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP