免费注册 查看新帖 |

Chinaunix

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

[求助]关于自己写的一个简单的shell解释器 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-12 11:22 |只看该作者 |倒序浏览
不管运行什么命令都会出现如下提示:
Segmentation fault: 11 (core dumped)
请各位帮忙看看
源码如下:

/*shell.c*/
#include <unistd.h>
#include <stdio.h>
void main (void)
{
        char command1,command2;
        printf("shell>");
        while(1){
        get_input(command1,command2);
        if(strcmp(command1,"logout")==0)
        exit(0);
        if(strcmp(command1,"help")==0)
        help();
        if(strcmp(command1,"cd")==0)
        if(chdir(command2)==-1)

        perror("chdir error");
        else my_pwd();
        if(strcmp(command1,"pwd")==0)
        my_pwd();


}
}

/*get_input.c*/
#include<stdio.h>
#define BUFSIZE 30
char get_input(char command1,char command2)
        {
        int ch;
        int len1=0,len2=0;
        char buf1[BUFSIZE],buf2[BUFSIZE];
        ch=getchar();
        while(len1<BUFSIZE&&ch!=' '&&ch!='t'&&ch!='n'){
        buf1[len1++]=ch;
        ch=getchar();
}
        if(ch=='t'|ch==' '){
        command1=buf1[len1];
        len1++;
        ch=getchar();
        while(len1<BUFSIZE&&ch!='n'){
        buf2[len2++]=ch;
        len1++;

        }
        command2=buf2[len2];}

        if(len1==BUFSIZE)
        printf("command is too long n");
        if(ch=='n')
        return EOF;
}


/*help.c*/
#include <stdio.h>
void help()

        {
        printf("cdn,helpn,logoutn,pidn,pwdn");
        }

/*my_pwd.c*/
#include <stdio.h>
#include <unistd.h>
#define VERYBIG 200
void my_pwd(void)
{
        char dirname[VERYBIG];
        if(getcwd(dirname,VERYBIG)==NULL)
                perror("getcwd error");
        else
                printf("%sn",dirname);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP