>> Delete No. 46971 article
No. [질문/프로그래밍] 쉘에서 background job을 foreground
job으로 돌기는 기능 만들기

등록 2002-04-15 01:22:00 By localhost     조회 2
이름 수세미    

		학교에서 쉘 만들라는 숙제가 나왔는데...
 거의 다 완성단계인데.. 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
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved