이 소스에 대해서 알고 싶습니다. 도와주세요 ㅠ
글쓴이: tlqkdto89 / 작성시간: 월, 2012/11/12 - 9:47오후
#include <string.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> #define MAX_CMD_ARG 10 const char *prompt = "myshell> "; char* cmdvector[MAX_CMD_ARG]; char cmdline[BUFSIZ]; void fatal(char *str) { perror(str); exit(1); } int makelist(char *s, const char *delimiters, char** list, int MAX_LIST) { int i = 0; int numtokens = 0; char *snew = NULL; if((s==NULL) || (delimiters==NULL)) { return -1; } snew = s + strspn(s, delimiters); if((list[numtokens] = strtok(snew, delimiters)) == NULL ) { return numtokens; } numtokens = 1; while(1) { if((list[numtokens] = strtok(NULL, delimiters)) == NULL) { break; } if(numtokens == (MAX_LIST-1)) { return -1; } numtokens++; } return numtokens; } int main(int argc, char**argv) { int i = 0; pid_t pid; while (1) { fputs(prompt, stdout); fgets(cmdline, BUFSIZ, stdin); cmdline[ strlen(cmdline) -1] ='\0'; switch(pid=fork()) { case 0: makelist(cmdline, " \t", cmdvector, MAX_CMD_ARG); execvp(cmdvector[0], cmdvector); fatal("main()"); case -1: fatal("main()"); default: wait(NULL); } } return 0; }
이 소스를 실행시켰을 때 ls, rm, touch, gedit 같은 명령어는 어떻게 알고 실행되는지. 다른 명령어는
왜 실행되지 않는지가 제일 궁금합니다.. 이 소스에 대한 부분적인 상세한 내용을 알고 싶습니다.
Forums:
저는 이게 뭐하는 프로그램인지가 더
저는 이게 뭐하는 프로그램인지가 더 궁금한데요...
음... ls, rm, touch, gedit같은 명령어는 "왜" 언급하신건가요?
피할 수 있을때 즐겨라! http://melotopia.net/b
man execvp
man execvp
세벌 https://sebuls.blogspot.kr/
댓글 달기