셸 프로그래밍 (새로운 프롬프트 생성 -> 명령어 입력 -> 수행)
main()
{
while(1) {
표준입력장치에 프롬프트 표시;
명령라인 입력;
명령라인 해석
if (^D 혹은 logout) break;
else if (공백라인) continue;
자식 프로세스 생성;
if (자식 프로세스) {
명령어 실행 후 종료;
}
if (백그라운드 모드가 아니면)
자식프로세스 종료시까지 대기
}
}
위와 같이 동작하는 쉘 프로그램을 작성하는데 아래의 기본 기능은 필수적으로 제공하고, 기타 다른 쉘에서 제공하는 부가 기능들도 가능하면 제공하도록 한다.
1)Background processing 2)입출력 방향 전환 3)순차 실행 (이것들을 수행하는 시스템 콜들이 뭔가요?)
execve로 프롬프트 생성까지는 되었는데 그 이후로 잘 모르겠어요 제가 한 소스 입니다
int main()
{ char buf[256];
int status;
while(1){
write(1,"NewSheLL #",10);
if (read(0,buf, 256)==0)break;
if (strlen(buf) < 1) continue;
if (fork()==0) {
buf[strlen(buf)-1]='\0';
execlp(buf,buf,NULL);
exit(0); }
wait(&status); }
return 0; }
댓글 달기