2010-11-22 4 views
3

"main"의 변수를 모니터하고 인쇄하는 "main"스레드에서 스레드를 생성한다고 가정합니다. 그러나 "main"도 일부 출력을 생성하므로이 두 스레드의 출력을 별도로 인쇄하려고합니다. 새 스레드의 출력을 내 C 프로그램에서 사용하는 "기본"스레드가 아닌 새 콘솔로 리디렉션 할 수 있습니까?새 터미널에 출력

+0

실행중인 운영 체제는 무엇입니까? –

+0

Fedora 운영 체제 – sinoTrinity

+2

Nitpick : fedora는 운영 체제가 아닙니다. 그것은 배포판입니다. – Falmarri

답변

0

그런 경우 (외부에서) 어떻게 될 것으로 예상됩니까?

프로그램을 실행하면 콘솔에 연결됩니다. 물론 출력을 콘솔에 쓸 필요는 없습니다 (파일을 사용할 수는 있지만) 콘솔을 분명히 복제 할 수는 없습니다.

다른 파일 설명자를 사용하면 충분하지 않습니까?

+0

기본적으로 서버와 다른 클라이언트로 작동하는 두 개의 스레드가 있습니다. 실시간으로 두 콘솔의 상태를 모니터하고 싶습니다. 두 출력을 같은 콘솔에 출력하면 인터리브되어 매우 읽기 쉽지 않습니다. 그래서 두 개의 다른 콘솔로 출력 할 수있는 방법이 있는지 궁금합니다. 하나는 서버 용이고 다른 하나는 클라이언트 용입니다. 내 C 프로그램에 있습니까? – sinoTrinity

+0

@sino 나는 더 분명해야했음을 짐작한다. 아니, 할 수 없어. 다시 시스템에서 도대체 무엇을 할 수 있을까요? SSH를 통해 콘솔을 열거 나 구식 물리적 모니터 인 경우에는 어떻게됩니까? 다시 말하면, 다른 파일 기술자에 쓰는게 어떨까요? –

+0

출력을 REAL-TIME으로 표시하고 싶습니다. 파일에 쓰는 경우 때때로 "tail -f"와 같은 형식으로 업데이트해야 할 수도 있습니다. – sinoTrinity

2

모니터링 정보를 파일로 출력 한 다음 tail -f filename을 사용하여 다른 터미널에 표시합니다.

이렇게하면 grep 또는 what-have-you를 출력 할 수 있다는 이점이 있습니다.

+0

가끔씩 "tail -f"와 같이 입력해야 할 수도 있습니다. 콘솔을 통해 파일의 내용을 동적으로 모니터하는 방법이 있습니까? 즉, 파일에 무엇인가가 추가되면 콘솔은 자동으로 아래로 스크롤하여 새로 추가 된 내용을 "printf()"와 같이 표시합니다. – sinoTrinity

+3

@sino 방금'꼬리 -f'가 무엇을하는지 설명했습니다. –

2

데이터를 로그 파일에 쓰고 다른 창에서 tail -f log_file.txt을 사용하여 데이터 복사본을 유지하는 방법으로 보았습니다.하지만 별도의 터미널을 사용해야한다고 결정한 경우 일반 파일처럼 새 터미널 (tty)을 열 수 있습니다. 이것의 주된 문제점은 아마 당신이 정말로 새로운 터미널 창을 열어주기를 원한다는 것입니다.

이런 식으로 새 터미널 창을 여는 것은 까다 롭고 다른 터미널 에뮬레이터마다 다릅니다. Here은 make 파일에서 새로운 터미널을 여는 것에 대한 또 다른 질문입니다. 프로그램에서 또는 프로그램을 실행하는 스크립트에서 동일한 작업을 시도하고 새 터미널에서 cat 또는 tail을 실행하여 로그 창을 만들 수 있습니다.

#!/bin/sh 
truncate --size=0 ./logfile.txt 
xterm "tail -f ./logfile.txt" 2>&1 > /dev/null & 
your_program --log-file=./logfile.txt 

현재이 작업을 수행하는 더 좋은 방법은 모르겠다.

조사하고 싶은 또 다른 사항은 syslog입니다.

관련 문제