免费注册 查看新帖 |

Chinaunix

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

C shell:开发一个shell程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-09 22:43 |只看该作者 |倒序浏览
这个shell程序必须支持以下的内部命令:
a.首先,cd<name> 把当前默认的目录改变为<name>.如果没有这个name,则显示当前目录。如果该目录不存在,会有错误信息出现。
要用C语言实现,跪求高手帮帮忙,小弟感激不尽,现在没有一点眉目啊!
跪求..........

论坛徽章:
0
2 [报告]
发表于 2007-05-09 23:28 |只看该作者
大家随便回复一点,给点思路也可以啊!谢谢了

论坛徽章:
0
3 [报告]
发表于 2007-05-09 23:48 |只看该作者
原帖由 wangfeng2500 于 2007-5-9 22:43 发表
这个shell程序必须支持以下的内部命令:
a.首先,cd<name> 把当前默认的目录改变为<name>.如果没有这个name,则显示当前目录。如果该目录不存在,会有错误信息出现。
要用C语言实现,跪求高手帮帮 ...

C语言还是csh?

论坛徽章:
0
4 [报告]
发表于 2007-05-09 23:49 |只看该作者
C语言的

论坛徽章:
0
5 [报告]
发表于 2007-05-10 10:20 |只看该作者
汗,我估计只能用用bash了

论坛徽章:
0
6 [报告]
发表于 2007-05-10 12:51 |只看该作者
system()

论坛徽章:
0
7 [报告]
发表于 2007-05-10 13:05 |只看该作者
参考sh的源代码。

论坛徽章:
0
8 [报告]
发表于 2007-05-10 17:31 |只看该作者
man chdir

论坛徽章:
0
9 [报告]
发表于 2007-05-10 19:08 |只看该作者
#include <stdio.h>
#include  <dirent.h>
#include  <sys/stat.h>
#include  <stdlib.h>

int main( int argc,char *argv[] )
{
    int                    iRet;
    struct stat             stDir;
    char szCommand[512];
   
    //判断命令行参数   
   if(argc != 2)
    {
        printf( "\n Plese input your dir \n");
        return -1;
    }
   
   //检查目录是否存在,这里没有判断它是否可读
  iRet = stat( argv[1], &stDir );
   
   if( iRet != 0 )
         printf( "Sorry ,The directry of  [%s] is not exists !!! \n",argv[1] );
   else
   {
            sprintf( szCommand,"cd %s  >/dev/null 2>&1", argv[1] );
                               
            iRet = system(szCommand);
           if( iRet !=0 )
                       return -1;       
   }
   return 0;
}

[ 本帖最后由 linux_gao 于 2007-5-10 19:12 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2007-05-10 19:10 |只看该作者
思路是这样,但是我告诉你有问题,你退出程序的时候,它没有cd到那个目录,因为cd ,不像mkdir 一样,会改变一些东西,你能看到,这个cd ,只是在内部运行一次,你退出程序它cd的结果不是显示在你当前终端上的。我只是给你一个参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP