이 소스에 대해서 알고 싶습니다. 도와주세요 ㅠ
글쓴이: 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/
댓글 달기