쉘에서 백그라운드로 프로세스 실행시킬때 말입니다..
글쓴이: withmelody / 작성시간: 토, 2010/10/09 - 5:33오후
fork()를 사용하여 자식프로세스를 만들고
또한 앰퍼샌드(&)를 추가해 백그라운드 모드에서 동작하게끔 프로그램을 만들고 있습니다.
일련의 커맨드를 입력받아 자식프로세스라면 execvp를 사용하여 프로그램들을 동작하게끔 만들고 있습니다.
그러나, 예를들어 man 커맨드를 말씀드리자면
보통 쉘에서
$ man bash
라고 한다면 bash 맨페이지가 뜨는게 정상입니다만,
<<< 백그라운드 모드로 실행할 시에는 프로세스는 생성되나 맨페이지는 뜨지 않는게 정상인 것으로 알고 있습니다. >>>
저는 이 부분이 안되고 있습니다!!
이것을 구현하려면 execvp외에 어떤 부분을 추가해야 하는지요.
친절한 답변 부탁드립니다.
감사합니다.
Forums:
dup2()를 쓰면 될 것
dup2()를 쓰면 될 것 같습니다.
표준 출력을 /dev/null과 같은걸로 대체 시켜버리면 될 것 같습니다.
감사합니다.
먼저 bash shell에서 아래와 같이 테스트 해 보았습니다.
$ top 1> /dev/null 2> /dev/null
이렇게 하니 프로세스는 실행하되 출력이 없어지는군요.
하지만 /dev/null을 어떻게 dup2()에 적용시킬지 모르겠습니다.
죄송하지만 조금만 더 알려주시면 감사하겠습니다(__)
dup2
/dev/null을 open해서 만들어진 fd을
자식프로세스 (man같은걸 실행하는)의 표준 출력으로 정해주시면 되겠죠
댓글 달기