fork로 새로운 터미널 생성?
글쓴이: aksen123 / 작성시간: 금, 2011/05/06 - 2:29오후
프로그래밍 할때 KLDP 덕을 많이 본 프로그래머(학생?)입니다.
리눅스에서 fork와 pipe를 이용한 프로그래밍을 하게 되었습니다.
한 부모 프로세스 밑에 다수의 자식 프로세스간에 pipe로 통신하는 프로그램입니다.
그런데 그냥 부모 프로세스에서 pipe 내용을 출력해주고 하다보니까... 도대체 어느 자식 프로세스의 내용이 출력되는지 모르겠더군요.
물론 출력 내용에 "x번 자식 프로세스 내용입니다."식으로 출력해도 되지만, 제가 원하는건 자식 프로세스간의 독립 터미널 창입니다.
즉, 자식 프로세스 생성 될 때 마다 독립적인 터미널이 생성되어서... 부모 프로세스에서 자식 프로세스에게 파이프로 메시지를 보내면, 자식 프로세스는 그 내용을 출력하되, 부모 프로세스와는 다른 터미널에서 출력이 되는것이겠죠?
(system 함수 써서, gnome-terminal 실행하는것까진 좋은데... printf 하면, 부모 프로세스가 있는 터미널에서 출력이 되더군요.)
물론 fork와 pipe는 꼭 써야 합니다.
머릿속에서는 정리가 되는데, 코딩이나 말로 표현하려니 조금 복잡하네요.
Forums:
man exec
man exec
...
프로세스가 터미널을 따로 받는 건 fork/exec보다 수십배쯤 복잡합니다. (저도 짜본적은 없어요...)
반드시 서로 다른 터미널에 꼭 출력을 해야 하는 이유가 있는 게 아니라면, 그냥 "나는 x번 프로세스입니다" 방식을 추천합니다.
그게 정 어지럽다면 프로세스 별로 정해진 파일에 출력을 하고 (예를 들면 child1.log라든지...) 터미널에서 tail -f로 보는 방식도 있습니다.
댓글 달기