소개글
학기레포트로 나온 minishell의 구현입니다.unix상에서 구현한 프로그램입니다.
좋은 점수받었으므로 레포트하실때 도움이
되실거라 생각합니다.
유용하게 사용하셨으면 좋겠네요..^^
컴파일 실행환경
없음본문내용
실습 목표운영체제 2장을 참고하여, 기본적인 Minishell을 작성하여 실습하고,
2장에서 만든 기본적인 Minishell을 9장을 참고하여, 확장하여, 추가적인 기능을
구현하여 실습한다.
‧추가 기능 : PIPE, REDIRECTION, BACKGROUND
프로세스와 관련된 5가지 명령어를 사용하여, 프로그램을 구현한다.
⑴ fork() ⑵ execvp() ⑶ wait() ⑷ pipe() ⑸ dup()
Minishell의 실행과정
1. 명령어 실행
① 사용자가 명령어를 치면, 명령어를 버퍼나 문자열을 통해서 라인으로 읽는다.
② 명령어 줄을 읽어서 명령어와 명령어인자로 파싱한다.
③ 명령어가 있는 경로를 환경변수를 통해서 찾고, 만약 명령어가 없다면 에러 메시지를 출력한다.
④ 자식을 생성하여, 명령어를 실행시키고 부모프로세스는 자식이 종료될 때까지 기다린다.
.......
<소스코드>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <sys/wait.h>
#define EOL 1 /* end of line */
#define ARG 2 /* normal arguments */
#define AMPERSAND 3
#define SEMICOLON 4
#define INREDIRECT 5
#define OUTREDIRECT 6
#define PIPE 7
#define MAXARG 512 /* max. no. command args */
#define MAXBUF 512 /* max. length input line */
#define MAXPIPES 5
#define FOREGROUND 0
#define BACKGROUND 1
void closeALLPipes(int [][2], int);
void executePipes(int, char **);
int refile(int , char *);
int runcommand(int, char **, int *, int, int);
int procine(void);
int inarg(char);
int gettok(char **);
int userin();
static char inpbuf[MAXBUF], tokbuf[2*MAXBUF],
*ptr = inpbuf, *tok = tokbuf;
static char special[] = {` `, `t`, `&`, `;`, `<`, `>`, `|`, `n`, ``};
main()
{
/* Start Shell */
printf("--------------------------------------------n");
printf("- 20313034 DONGHYEONG-LEE`s Shell -n");
printf("- Are You Quit? Enter (quit). -n");
printf("--------------------------------------------n");
while(userin() != EOF) //명령어를 입력받는 함수.
procline(); //입력받은 명령을 분석한다.
}
int userin()
{
int c, count; //count는 명령어의 글자 수.
char *buf;
buf=getcwd(NULL,40);
//현재 폴더를 보여줌
/* initialization for later routines */
//입력버퍼 첫 배열의 주소를 포인터 변수 ptr에 저장.
ptr = inpbuf;
//토큰버퍼 첫 배열의 주소를 포인터 변수 tok에 저장.
tok = tokbuf;
printf("[%s]", buf); //명령 프롬프트를 출력한다.
count = 0; //count 초기화.
while(1) //명령어가 끝날때 까지 루프를 돈다.
{
if((c = getchar()) == EOF)
압축파일 내 파일목록
Minishell.hwp
minishell 프로그램의 수행 단계.txt
minishell.c
minishell.c.txt
minishell.h
minishell.h.txt
minishell 프로그램의 수행 단계.txt
minishell.c
minishell.c.txt
minishell.h
minishell.h.txt
참고 자료
Operating Systems,Nutt, Third Edition.이 자료와 함께 구매한 자료
- c를 이용한 shell 만들기(리눅스 기반) 22페이지
- 리눅스 쉘(linux myshell) 프로그래밍 39페이지
- C를 이용한 unix shell의 구현 0페이지
- [운영체제]리눅스 minishell(미니쉘) 제작 리포트 5페이지
- 리눅스환경에서 구현한 MiniShell 7페이지