资源简介

《操作系统—精髓与设计原理》一书中myshell编程项目,代码写得很清晰,纠错能力很强大,实现了基本的内部命令:cd、dir、help、echo、environ等,以及实现文件重定向、后台处理等功能。附有实验报告。

资源截图

代码片段和文件信息

/*       操作系统练习1: myshell.c  
           姓名: 杨富强
           学院:通信工程 
           学号:01051312 
          在Ubuntu7.10和cygwin下已经测试通过
*/ 

#include “myshell.h“ 

int main (int argc char *argv[])
{
    char buf [MAX_BUFFER] pwd [MAX_ARGS];    // line buffer
    char shell_path[MAX_ARGS]=“shell=“;
    char readme_path[MAX_ARGS]=“readme_path=“;
    char newpath[MAX_ARGS*1000];
     int len;  
   strcpy(newpathgetenv(“PATH“));
   strcat(newpath“:“);
     if(strcmp(argv[0]“./myshell“)&&strcmp(argv[0]“myshell“)) 
         {                 
              len=strlen(argv[0]);  
            while(len&&argv[0][len]!=‘/‘)   len-- ; 
            argv[0][len]=‘\0‘;           
           strcpy(pwdargv[0]);    
           get_fullpath(pwd argv[0]);  
             printf(“%s\n“pwd);  
            }
   
       else  strcpy(pwd  getenv(“PWD“));    
      strcat(newpathpwd);   // strcat(newpathgetenv(“PWD“));     
     setenv(“PATH“newpath1);// add the current working directory  in the “PATH“ environment variable to search for the filename specified.
   
     strcat(shell_pathpwd);   //  strcat(shell_path getenv(“PWD“));
    strcat(shell_path“/myshell“);
    putenv( shell_path); //add the working directory  of myshell in the environment variables           
      strcat(readme_path pwd);  //   strcat(readme_path getenv(“PWD“));//    
       strcat(readme_path“/readme“);         
      putenv(readme_path); //   add the filepath of the file “readme“  in the  environment variables see function  my_help( ) ! 
      
    if(argc>1)  // 也许用户直接在终端输入  ./myshell a.bat  >c.txt 
{
   strcpy(buf“myshell “);
   int i;
   for(i=1;i    {
   strcat(bufargv[i]);
       strcat(buf“  “);
   }
   Execute(buf);// execute this command,  执行这个批处理命令
}

else  // 如果用户在终端输入 ./myshell
{
   my_clear( );
           fprintf(stderr “Welcome Enter myshell!\nType \“help\“ to see the help information.\n“);          
   my_shell(stdinNULLNULL);
 }
    return 0 ; 
}    // end  function “main“ 



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        188  2008-06-17 12:39  myshell_for_linux\makefile

     文件       2118  2008-06-17 12:39  myshell_for_linux\myshell.c

     文件       2265  2008-06-17 12:39  myshell_for_linux\myshell.h

     文件      11840  2008-06-17 12:39  myshell_for_linux\readme

     文件      40643  2008-06-17 12:39  myshell_for_linux\utility.c

     文件     371200  2009-04-27 14:29  操作系统实验报告.doc

     目录          0  2010-11-02 23:24  myshell_for_linux

----------- ---------  ---------- -----  ----

               428254                    7


评论

共有 条评论