当前位置:  技术问答>linux和unix

【高分求解】 请帮帮忙,修改这个UNIX shell程序 【UP有分】 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    来源: 互联网  发布时间:2015-12-14

    本文导语:  ★★★★★★★★★★★★★★★★★★★                     各位大侠,小弟才开始接触UNIX下的shell编程.                    目前这几个功能无法实现,非常郁闷....                    ...

★★★★★★★★★★★★★★★★★★★

                    各位大侠,小弟才开始接触UNIX下的shell编程.

                   目前这几个功能无法实现,非常郁闷....

                   请大家帮帮忙 修改一下下面这个UNIX shell程序

                     ★★★★★★★★★★★★★★★★★★★



/////////////////////////////////////////////////////////////////////////


       1. 写一个logout的功能可以使用户退出shell
       2. CD.. 和 CD. 的功能可以返回父目录。 CD 进入子目录 提示:用chdir()
       3. 写一个history的功能来显示最近的10个命令。
       4. 重定向功能,用(, 和 >>) 提示输入输出

///////////////////////////////////////////////////////////////////////////




#include 
#include 
#include 
#include 
#include 

#define MAXLINE 200
#define MAXARG 20
#define FALSE 0
#define TRUE 1


extern char **environ;

static int getargs(int *argcp, char *argv[], int max, int *eofp)
{
  static char cmd[MAXLINE];
  char *cmdp;
  int i;

  *eofp = FALSE;
  
  if (fgets(cmd, sizeof(cmd), stdin)==NULL)
    {
      if (ferror(stdin))
        fprintf(stderr, "error in reading from stdinn");
      *eofp=TRUE;
      return FALSE;
    }
 

  cmdp=cmd;
  *argcp=0;
  for (i=0;i=max)
    {
      printf("Too many args -- command ignoredn");
      return(FALSE);
    }
  
  return(TRUE);
}


static void execute2(int argc, char *argv[])
{
  pid_t pid;

  switch (pid=fork()) {
  case -1: /* parent (error) */
           fprintf(stderr,"Error in fork()n");
           break;
  case 0: /* child */
          execvp(argv[0], argv);
          fprintf(stderr,"Cannot executen");
  exit(0); /* exit the child process when failure to execute */
          break;
  default: /* parent */
          wait(NULL);
          break;
  }
  return;
}


void set(int argc, char *argv[])
{
   int i;
   if (argc!=1)
     printf("Extra argsn");
   else
     for (i=0;environ[i]!=NULL;i++)
       printf("%sn", environ[i]);
}

int main(void)
{
  char *argv[MAXARG];
  int argc;
  int eof;

  while (TRUE) {
/* print the prompt */
    printf("%s@ ",getenv("USER"));
/* get arguments from the user input and parse them into the argument array */
    if (getargs(&argc, argv, MAXARG, &eof))
  /* if the user inputs a command instead of a return */
      if (argc>0) 
        { 
  /* if the user's input is the shell command "set" */
          if (strcmp(argv[0], "set")==0)
            set(argc, argv);
  /* else execute the command */
          else
            execute2(argc, argv);
        }

    if (eof)
      exit(0);
  }

  return(0);
}

|
修改的代码如下,不知道怎么回事,重定向没有搞定。:(****
不管怎么样,先把修改的代码贴上来再说。****************
欢迎访问我的论坛http://www.techcookie.com/forum ******
******************************************************


#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MAXLINE 200
#define MAXARG 20
#define FALSE 0
#define TRUE 1
#define HIS_SIZE 10

static int his_count = 0;
static int his_idx = 0;
static char his[HIS_SIZE][MAXLINE];

extern char **environ;

static int getargs(int *argcp, char *argv[], int max, int *eofp)
{
  static char cmd[MAXLINE];
  char *cmdp;
  int i;

  *eofp = FALSE;

  if (fgets(cmd, sizeof(cmd), stdin)==NULL)
    {
      if (ferror(stdin))
        fprintf(stderr, "error in reading from stdinn");
      *eofp=TRUE;
      return FALSE;
    }

  if (his_count 

    
 
 

您可能感兴趣的文章:

  • 高分求解---如何在DOS下查杀欢乐时光病毒?用哪种杀毒软件?Windows98没法进入了!
  • 简单问题,高分求解
  • 各位大侠,高分求解
  • 高分求解,一定给分!!!!
  • 高分求解jbuilder5 运行自带的jsp范例出错的问题?
  • 高分求解,不够再加
  • ################高分求解!!!!,关注有分!!!!
  • 哪里能够下载到针对InterBase的第三类的JDBC驱动程序InterClient?高分求解......
  • jsp 里面的 特殊字符“单引号”“双引号”的替换??(高分求解)
  • linux上的媒体播放(高分在线求解)
  • 调试JSP遇到的问题,高分求解
  • 高分求解:win2000访问linux
  • 高分求解 - TOMCAT中的内存泄漏问题……
  • 通讯行业里的OSS(网管)系统是什么样系统啊?干什么用的?高分求解
  • 急急急!!!高分求解linux 2.6 内核安装网卡的问题
  • 【NFS问题暴高分求解】如何知道Server端有哪些目录共享?
  • 高分求解,信号捕获
  • 三个容易bash脚本,高分求解
  • 高分求解?????一定给分
  • 从交换机分出来的机器的ip地址问题(高分求解)
  • 问几个关于JSP的问题,各位帮帮忙(高分相送)
  • 一定高分给去!高手请来帮帮忙。
  • 高分求救!JNI与中文的问题!!请知道的朋友帮帮忙!!!
  • linux问题请高手帮帮忙!!!送高分
  • 想给高分的,可是我最高只能给24分?!请帮帮忙吧,我快愁死了!
  • x-win32(6.1)如何使用?各位高手帮帮忙!高分相送
  • 请各位帮帮忙,高分相赠
  • 各位老大帮帮忙。 答问题 送高分。。。。
  • [高分求救]Jbuilder7连接不上sqlserver,为什么,大家帮帮忙!
  • (高分请教)刚接到一个项目,请大家帮我看看我所认为的技术难点该如何解决?Andrew.老weidegong?.....帮帮忙
  • 弄了一天了!!!大家帮帮忙阿,高分!!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ###########谁有JMS的例子(发组播消息的)或者相关的经验,请进来帮帮我,一定送高分!!!
  • 各位老大,谁能帮帮我,一简单问题,高分!!
  • 高分求有关java学习的好站点,及经典的介绍javabean的书籍。各位大侠,帮帮我好么?一定给分!
  • 大家一定要帮帮我啊!!高分相送!!
  • 急,!!!高分给你,快帮帮兄弟吧,
  • 高分求助,请教关于在ARM Linux下启动goahead服务器的问题。很急,在线等待,希望各位大虾帮帮,万分感激
  • 唉,帮帮我吧,redhat8.0 Adsl上网(没网卡,也无需帐号的,高分相送)
  • 各位大侠:linux/unix下有什么双字节的字符类型及其一整套处理函数? 高分送出,请帮帮小弟!!!!!!
  • 高分求助高分求助高分求助高分求助高分求助高分求助
  • 谁参加过weblogic的证书考试,是否有经验可供参考?高分高分高高分
  • 哪里有JB6下载啊,高分相送,救命
  • 高分求救!我在uclinux上运行应用程序时出现内存分配错误,不知如何解决,解决者高分!!
  • 哪里去找中文的EJB文章?高分悬赏!
  • 有jsp的upload和download 代码么,高分相报!
  • (高分求助)请问,那里有软件开发的<设计文档>
  • 高分寻求jsp代码(网上调查系统,新闻发布系统)就这点分了
  • 高分求购做饼图、线形图的源吗?
  • WEB前端 iis7站长之家
  • 一个简单的问题,高分求助!!!
  • 高分求购jbulider6得注册码,企业版本,个人版本都要
  • Linux远程访问的问题,高分求教:)
  • 请问哪儿有Solaris8的光盘映像文件下载???高分相赠!!!
  • 高分求“Ration Rose”&"JBuilder6.0"&"VisualCafe"
  • VJ的一个问题,高分求助,熟悉VJ得请进!
  • 高分求购:linux和unix命令大全电子文档
  • 急救:关于BLOB数据类型---在线等待,高分相送!
  • 求UNIXWARE7.11的原版下载,高分相赠,在线等待!!!
  • 关于java?高分相送!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3