[질문] 쉘을 만드는데 백그라운드를 포어그란운드로 만들기

학교에서 쉘 만들라는 숙제가 나왔는데...
거의 다 완성단계인데.. job control단계에서 막히네요..
% find / -name linux &
[1] 23150
% fg
find / -name linux
즉, background job을 foreground job으로 변환하고.... 반대로 bg명령어
는
foreground process을 backgrond job으로 변경을 하는 쉘 자체에 내장된
built-in command입니다..
자세한 방법을 모르 겠습니다.. 아래와 같은 방법으로 구현을 하였는데...
우선 백그라운드로 작업을 돌리고, fg를 하면... 제가 만든 쉘의 프로세스
가
stop되면서 빠져나와 버리네요.. 백그라운드 작업으로 바뀌어 집니다..
stop된 제가 만들 쉘의 프로세스를 다시 foreground로 돌리면 다시 쉘이
실행됩니다.. 이때 백그라운드 돌렸던 프로세스는 kill된 상태이더군요..
int ctty;
pid_t fgpgrp; // foreground process group id
// ctermid();는 현재 프로세스의 tty의 디바이스 파일에 대한 파일 이름
을
// 리턴합니다.. "/dev/tty" 이런 값을 리턴하는 거죠..
ctty = open(ctermid(NULL), O_RDWR);
if((fgpgrp = tcgetpgrp(ctty)) < 0)
{
.
.
.
이런식으로 이 프로세스가 background인지 foreground인지 파악
합니다.
}
tcsetpgrp(ctty, background process's ID);
이렇게 하면 될 것 같은데..
누구 잘 아시는 분 알려주세요.... 중간고사도 있는데..
이것만 붙잡고 있을 수도 없고.. T.T
댓글 달기