간단 한 셸 작성 (입 출력 방향 변경)

1602 단어 Linux
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main()
{
  char file[32] = {0};
  char cmd[1024] = {0};
  printf("shell:");
  fflush(stdout);
  //%[^
]
//%*c if(scanf("%[^
]%*c",cmd) != 1) { getchar(); } // char *ptr = cmd; int flag = 0; while(*ptr != '\0') { if(*ptr == '') { *ptr++ = '\0'; flag = 1; if(*ptr == '>') { flag = 2; *ptr++ = '\0'; } while(*ptr != '\0' && isspace(*ptr)) { ptr++; } strcpy(file,ptr); } ptr++; } // ptr = cmd; char *argv[32] = {NULL}; int argc = 0; while(*ptr != '\0') { if(!isspace(*ptr)) { argv[argc++] = ptr; while(!isspace(*ptr)&& *ptr != '\0') ptr++; continue; } else{ *ptr = '\0'; } ptr++; } // , int pid = fork(); if(pid <0) { perror("fork error"); exit(-1); }else if(pid == 0) { int fd = -1; if(flag == 1) // { fd = open(file,O_CREAT|O_WRONLY,0664); dup2(fd,1); }else if(flag == 2) { fd = open(file,O_CREAT|O_APPEND|O_WRONLY,0664); dup2(fd,1); } execvp(argv[0],argv); // } wait(NULL); // , ( ) return 0; }

좋은 웹페이지 즐겨찾기