본문 바로가기
Linux/SystemProgramming

쉘(Shell) 프로그램

by neohtux 2016. 9. 4.
728x90

이 쉘의 main 함수에서는 사용자로부터 입력 받아서 run() 함수를 수행한다.


이때 사용자로부터 입력된 내용을 함수의 인자로 넘겨주는데, run() 함수는 이 입력 내용을 분석한다.


간단히 공백을 토큰으로 분리하는데, tokenize() 함수가 이 역할을 수행한다.


여러 개의 토큰으로 분리가 되면 첫 번째 토큰 값을 기준으로 내장 명령어인지 확인.


만약 쉘의 내장 명령어라면 해당 명령어를 수행, else 해당 프로그램의 수행을 시도.


run함수에서 fork 함수를 통해 자식 프로세스가 생성되면 자식 프로세스는 exec 함수로 사용자가 입력한 프로그램을 수행시킨다.


프로세스의 인자를 배열로 넘겨 환경변수의 값으로 변환하여 프로세스의 실행이 가능하도록 execvp()함수를 이용함.



300x250

댓글