亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myshell.c

?? 一個shell程序可以實現管道
?? C
字號:
/*BY Dai Qieyun *   Chen Xinwei *   Dai Wei*/#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>#include <sys/wait.h>#include <stdlib.h>#include <string.h>

extern char **getline();

main() {  int i;
  char **args;  int pid;  int stat_val;  int isRedirect;  int isPipe;  int isBack;  int position;   printf("Welcome to MyShell ^_^\n");

  while(1) {        isRedirect=0;    isPipe=0;    position=0;
    printf("MyShell>>");    args = getline();    for(i = 0; args[i] != NULL; i++){    //testing whether the command is redirection or pipe      if(!strcmp(args[i],"<")||!strcmp(args[i],">"))	{	  isRedirect=1;	  position=i;	}      if(!strcmp(args[i],"|")){	  isPipe=1;	  position=i;	}    }
        if(args[0]==NULL); //empty command    else if(!strcmp(args[i-1],"&")){//background execution      args[i-1] = NULL;      pid=fork();//bulid a runback process,and don't eliminate the parent process      if(pid==-1) {          perror("Failed to fork");         return 1;      }      if(pid == 0){         if(setsid() == -1)            perror("Child faild to become a session leader");         else{             execvp(args[0],args);            printf("Command not found in PATH\n");            exit(0);         }         return 1;      }    }    else if(isPipe){  //pipe	pid_t child,gChild;	int file_pipes[2];		char **command;        command=&args[position+1];	args[position]=NULL;        child=fork();        switch(child){            case -1:              perror("Fork Failed\n");              exit(-1);            case 0:              if(!pipe(file_pipes)){                  gChild=fork();                  switch(gChild){                     case -1:                        fprintf(stderr,"Fork Failed\n");                        exit(-1);                     case 0:           //the grandchild process,writing to the pipe                                                close(1);                        dup2(file_pipes[1],1);                        close(file_pipes[1]);                        close(file_pipes[0]);                        execvp(args[0],args);                        printf("Command not found in PATH\n");                        exit(0);                         default:         //the child process, reading from the pipe                                                close(0);                        dup(file_pipes[0]);                        close(file_pipes[0]);                        close(file_pipes[1]);                        execvp(command[0],command);                        printf("Command not found in PATH\n");                        exit(0);                                         }              }                default:                   waitpid(child,&stat_val,0);                   if(!WIFEXITED(stat_val))                        printf("Child terminated abnormally\n");         }                              }    else if(!strcmp(args[0],"exit")) //the exit command        exit(0);        else if(!strcmp(args[0],"add")){ //the add command        pid=fork();                switch(pid){           int i;           int result;                   case -1:              perror("Fork Failed\n");              exit(-1);                      case 0:              if(isRedirect){                 char *fileName;		 fileName=args[position+1];		 args[position]=NULL;		 if(!freopen(fileName,"w",stdout)){ //Redirect the add result to file		    fprintf(stderr,"could not redirect stdout to file %s\n",fileName);		    exit(2);	         }              }                  result=add(args);              for(i=1;args[i+1]!=NULL;i++)                 printf("%s+",args[i]);              printf("%s=%d\n",args[i],result);              exit(0);                      default:              wait(&stat_val);              if(!WIFEXITED(stat_val))                  printf("Error:child terminated abnormally\n");          }   }   else if(!strcmp(args[0],"args")){ //the args command       pid=fork();       switch(pid){         case -1:            perror("Fork Failed\n");            exit(-1);         case 0:            if(isRedirect){               char *fileName;	       fileName=args[position+1];	       args[position]=NULL;		 if(!freopen(fileName,"w",stdout)){ //redirect args result to file		    fprintf(stderr,"could not redirect stdout to file %s\n",fileName);		    exit(2);	      }            }                arg(args);            exit(0);         default:            wait(&stat_val);            if(!WIFEXITED(stat_val))                printf("Error:child terminated abnormally\n");      }   }   else if(!strcmp(args[0],"search")){
        printf("%d found\n",search(args));
   }
   else {   //the rest of the cases        pid=fork();        switch(pid){            case -1:              perror("Fork Failed\n");              exit(-1);            case 0:              if(isRedirect){  //redirection                 char *fileName;		 fileName=args[position+1];		 if(*args[position]=='>'){		    args[position]=NULL;		    if(!freopen(fileName,"w",stdout)){ //writing to file, closing standard out			fprintf(stderr,"could not redirect stdout to file %s\n",fileName);			exit(2);		    }		    execvp(args[0],args);                    fprintf(stderr,"Command not found in PATH\n");                    exit(0);	         }    	         else{		    args[position]=NULL;		    if(!freopen(fileName,"r",stdin)){ //reading rom file, closing standard in		       fprintf(stderr,"could not redirect stdin to file %s\n",fileName);		       exit(2);		    }		    execvp(args[0],args);                    printf("Command not found in PATH\n");                    exit(0);		}              }              else{                           execvp(args[0],args);                   printf("Command not found in PATH\n");                   exit(0);              }            default:              wait(&stat_val);              if(!WIFEXITED(stat_val))                  printf("Error:child terminated abnormally\n");    
        }     }
   }}int add(char**args){   int sum=0;    int i;   for(i=1;args[i]!=NULL;i++){      if(args[i][0]=='0'&&args[i][1]!='\0'&&(args[i][1]=='x'||args[i][1]=='X'))         sum+=hex(args[i]);      else         sum+=dec(args[i]);   }   return sum;}int dec(char* str){ //converting string notation of dec number to decimal int   int num=0;   int i;   for(i=0;str[i]!='\0';i++){     int digit=str[i]-'0';       if(digit<0||digit>9){         printf("Wrong with your input\n");         exit(0);       }      num=10*num+digit;   }   return num;}int getNumber(char a){ //converting char to number   if('0'<=a&&a<='9')     return a-'0';   else if ('a'<=a&&a<='f')     return 10+a-'a';   else if('A'<=a&&a<='F')     return 10+a-'A';   else{     printf("Wrong with your input\n");     exit(0);  }} int hex(char* str){ //converting string notation of hex number to decimal int   int num=0;   int i;   for(i=2;str[i]!='\0';i++){     int digit=getNumber(str[i]);       num=16*num+digit;   }   return num;}arg(char** args){   char* result;   int i;   if(args[1]==NULL){     printf("args=0");     return;   }   for(i=1;args[i]!=NULL;i++);   printf("argc=%d,args=",i-1);   for(i=1;args[i+1]!=NULL;i++)     printf("%s,",args[i]);   printf("%s\n",args[i]);}int search(char ** args)  //search the file you give , count the times of the string you have given
{
    char*str=args[1];
    char*filename=args[2];
    printf("search \"%s\" in file %s\n",str,filename);
    int count=0;
    int c;
    int i=0;
    int len=strlen(str);
    FILE *fp;
    fp=fopen(filename,"r");

    while((c=fgetc(fp))!=EOF)
    {
        if(c==str[i])
        {
            if(++i==len)
            count++;
        }
        else
        {
            i=0;
        }
        }
    fclose(fp);
    return count;
}             

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线播精品第三| 欧美亚洲动漫精品| 精品一区在线看| 美女在线视频一区| 开心九九激情九九欧美日韩精美视频电影 | 日本精品一级二级| 91免费视频大全| 91丨porny丨中文| 色婷婷av一区二区三区gif| 一本色道久久综合亚洲精品按摩| 色94色欧美sute亚洲线路一ni | 久久久国产精品不卡| 精品噜噜噜噜久久久久久久久试看| 欧美一区二区高清| 欧美一级搡bbbb搡bbbb| 日韩一区二区三区视频| 精品少妇一区二区三区在线视频| 久久久噜噜噜久噜久久综合| 国产精品欧美极品| 一区二区三区四区在线播放| 亚洲成在人线在线播放| 久久国产免费看| 国产精品一区二区无线| 成人av资源下载| 欧美日韩一区二区在线观看视频 | 欧美成人综合网站| 国产亚洲短视频| 国产精品乱码妇女bbbb| 亚洲精品福利视频网站| 日韩精品1区2区3区| 国产麻豆精品theporn| www.亚洲精品| 欧美高清视频在线高清观看mv色露露十八 | 成人一区二区在线观看| 欧亚一区二区三区| 日韩一区二区电影| 国产日韩精品一区二区浪潮av| 亚洲老妇xxxxxx| 伦理电影国产精品| av电影在线观看不卡| 欧美伦理电影网| 国产丝袜美腿一区二区三区| 一区二区三区成人| 国产一级精品在线| 欧美三级韩国三级日本三斤 | 精品一区精品二区高清| 波多野洁衣一区| 91精品国产一区二区三区香蕉| 久久久久国产一区二区三区四区| 亚洲女人****多毛耸耸8| 日韩成人午夜精品| 成人黄色一级视频| 欧美一卡在线观看| 亚洲人一二三区| 久久成人久久鬼色| 91国偷自产一区二区开放时间| 久久久久久亚洲综合| 亚洲午夜久久久久久久久久久| 国产一区二区成人久久免费影院 | 欧美大片在线观看| 亚洲在线中文字幕| 成人深夜视频在线观看| 4438x成人网最大色成网站| 国产精品久久网站| 久久精品国产网站| 欧美三级午夜理伦三级中视频| 国产精品丝袜一区| 久久精品国产免费| 欧美精品丝袜久久久中文字幕| 国产精品婷婷午夜在线观看| 精品影视av免费| 91精品国产黑色紧身裤美女| 亚洲女人****多毛耸耸8| 国产成人免费视| 日韩欧美精品在线| 天天综合色天天综合色h| 99r国产精品| 亚洲国产精品高清| 九九国产精品视频| 7777精品伊人久久久大香线蕉经典版下载| 国产精品不卡在线| 国产精品中文字幕欧美| 日韩欧美一区二区免费| 五月天一区二区| 在线观看国产一区二区| 亚洲男人都懂的| 99久久国产综合精品色伊| 国产丝袜在线精品| 国产成人免费视频一区| 欧美精品一区二区三区一线天视频 | 欧美美女一区二区| 亚洲电影欧美电影有声小说| 在线一区二区视频| 亚洲精品国产无套在线观| 不卡在线观看av| 亚洲国产高清不卡| 国产一区二区在线观看免费| 日韩视频在线你懂得| 蜜桃av一区二区在线观看 | 依依成人精品视频| 97久久超碰精品国产| 亚洲人成在线播放网站岛国 | 久久女同性恋中文字幕| 国产综合色产在线精品| 久久久久久麻豆| 高清shemale亚洲人妖| 国产精品国产三级国产aⅴ无密码| 北条麻妃国产九九精品视频| 国产精品久久久久久久久免费丝袜 | 日本欧美加勒比视频| 日韩欧美国产一区在线观看| 免费成人美女在线观看.| 日韩一区二区在线观看| 精彩视频一区二区| 久久综合成人精品亚洲另类欧美 | 成人av资源在线| 综合欧美一区二区三区| 欧美中文字幕一区二区三区亚洲| 亚洲高清三级视频| 日韩精品一区二区三区四区| 国内精品久久久久影院薰衣草 | 亚洲资源在线观看| 欧美日产在线观看| 韩国v欧美v日本v亚洲v| 国产精品婷婷午夜在线观看| 在线亚洲精品福利网址导航| 波多野结衣中文一区| 亚洲一区二区视频| 日韩欧美精品在线视频| 成人久久18免费网站麻豆 | 91在线视频网址| 亚洲成a人片在线不卡一二三区 | 中文字幕一区二区三区在线播放| 99久久99久久免费精品蜜臀| 有码一区二区三区| 精品少妇一区二区三区免费观看| 成人性视频网站| 亚洲一区二区欧美激情| 日韩精品一区二区三区在线观看 | 日韩精品国产精品| 国产视频一区二区三区在线观看| 91一区二区三区在线播放| 香蕉影视欧美成人| 久久综合狠狠综合久久综合88| 97久久精品人人做人人爽| 日韩电影在线观看电影| 国产精品乱码妇女bbbb| 欧美一区二区三区免费在线看| 国产成人av一区二区三区在线观看| 亚洲日本一区二区三区| 日韩精品一区二区在线观看| 91视频在线观看免费| 全国精品久久少妇| 亚洲欧洲美洲综合色网| 日韩午夜在线播放| 色狠狠桃花综合| 国产精品99久久久久久似苏梦涵| 亚洲激情图片qvod| 久久久久97国产精华液好用吗| 欧美特级限制片免费在线观看| 国产成人免费高清| 蜜臀av一级做a爰片久久| 亚洲欧洲精品天堂一级| 精品国产免费久久| 91亚洲国产成人精品一区二三| 麻豆精品在线视频| 亚洲午夜久久久久中文字幕久| 国产视频一区在线播放| 欧美一区二区在线免费播放| 91色综合久久久久婷婷| 韩国在线一区二区| 日本中文字幕一区二区视频 | 99久久综合狠狠综合久久| 美女被吸乳得到大胸91| 一区二区三区四区亚洲| 中文字幕 久热精品 视频在线| 欧美一区二区在线免费播放| 欧美中文字幕一二三区视频| 成人激情视频网站| 欧美丰满美乳xxx高潮www| 波多野洁衣一区| 国产精品一二三区在线| 毛片av中文字幕一区二区| 亚洲午夜一二三区视频| 亚洲精品国产品国语在线app| 国产精品九色蝌蚪自拍| 337p粉嫩大胆噜噜噜噜噜91av| 欧美久久久影院| 91福利精品视频| 97久久久精品综合88久久| 成人动漫一区二区| 国产成人综合在线播放| 精品亚洲成av人在线观看| 蜜桃av一区二区| 日韩电影在线免费观看| 日韩精品免费专区| 首页欧美精品中文字幕| 亚洲成人1区2区| 亚洲午夜免费视频| 香蕉成人啪国产精品视频综合网|