[완료] XOpenDisplay 다른 호스트 서버로의 연결 문제
글쓴이: kakalot81 / 작성시간: 화, 2008/05/27 - 7:29오후
처음 글을 남깁니다.
요즘 X윈 플밍을 시작하고 있는데,
얼마전 구축한 클러스터로 마스터 노드에서 원격으로 다른 호스트로 윈도우를 띄우는 작업이 필요합니다.
현재 제 클러스터 환경은 ssh, rsh, 등으로 각 로컬에 접속 가능한 상태로 set 해놓았구요.
아래 코드가 위치한 부분도 모든 노드에서 작동할 수 있도록 마운트시켜 놓았습니다.
XOpenDisplay("hostname1:0.0");
함수를 이용해서 hostname1이라는 호스트에 master에서 작업한 윈도우를 띄우려고 하는데
컴파일은 성공적으로 완료되었지만 실행시에 Segmentation fault 라는 에러가 발생합니다.
XOpenDisplay(NULL); 은 제대로 잘 작동합니다.즉 현재 DISPLAY라는 환경 변수값을 읽어올 수는 있습니다.
하지만 기본적인 master에서 master로 디스플레이를 만드는
XOpenDisplay("master:0.0"); 함수 또한 세그멘테이션 오류가 발생합니다.
Quote:
... 여기서 콜론(:)은 TCP/IP를 지원하는 네트웍임을 나타내지만...중략.
X-Window Programming in 프세제가 네트웍쪽은 개념이 잘 안잡힌 관계로 TCP/IP를 지원하는 이라는 말을 잘 이해하지 못하겠네요.
따로 서비스(네트웍) 설정을 해주어야 하는 건가요?좀 도와주세요 일주일째 제자리 걸음입니다. ㅡㅜ
Forums:
잘은 모르겠지만...
잘은 모르겠지만... xhost 관련 아닐런지...
http://sebul.sarang.net/
세벌 https://sebuls.blogspot.kr/
글쓴이입니다. 현재
글쓴이입니다.
현재 xhost 설정을 완료하고 시도해보았는데
A, B 호스트네임이 있다고 가정했을때
A - DISPLAY=A:0.0
B - DISPLAY=B:0.0 이라고 환경변수에 set해놓고 (by export ...)
#~B] xhost +
#~A] xlogo -display B:0.0
하니, Error : Can`t open display: A:0.0 이라고 뜨네요.
X윈도에서 tcp 접근설정 막아놓은 /etc/X11/fs/config 의 no-listen = tcp도 주석처리 했습니다.
방화벽은 제거했구요,/etc/hosts.allow 에서는 ALL : ALL 해주었습니다.
그리고 ssh를 통해서는 -x 옵션을 사용해 디스플레이 되었습니다.
(X11Forwarding yes로 설정하니까 되더군요)
호스트 서로간의 X-window 접근에 문제가 있는건지.. 제가 틀리거나 놓친 부분이 있는지..
아.. 미치겠네요.ㅜㅜ 누가 답변 좀 해주세요.
혼자 북치고
혼자 북치고 장구치는 것 같지만, 결국 해결했기에 이렇게 댓글을 답니다.
환경변수 문제는 아니었구요. 역시 tcp 제한 문제였네요. 헐..
# ps -at | grep X
실행해보니, 저 뒤에 tcp 제한이 떡하니 버티고 있더군요.
그런데 헤맨건 제 환경이 kde인데 /etc/kde3/kdm/kdmrc 에서 no-listen = tcp라는 부분을 못 찾았습니다. 오랜 방황끝에 X-window GUI 환경에서 설정을 찾아 수정했네요
KDE -> System -> Login Screen -> 보안탭
여기서 X 서버에서 TCP 연결거부를 비활성화 해주면 됩니다.
혹시 kde 정확한 파일 경로나 no-listen = tcp 위치 아시는 분은 답글 부탁드립니다.
그럼 부디 저같은 삽질을 하시지 않길 바라며.
No Pain, no gain.!
KDE 3이라면 저 경로가
KDE 3이라면 저 경로가 맞을 것이고, KDE 4라면 /usr/lib/kde4/etc/kde4/kdm/kdmrc 입니다. 제 kdmrc 파일에서 [X-:*-Core] 섹션 아래에 보면
ServerArgsLocal=-nolisten tcp
부분이 있더군요. 그걸 주석 처리 해 주면 됩니다.
---- 절취선 ----
http://blog.peremen.name
kde3 정확한
kde3 정확한 경로입니다.
/etc/kde/kdm/kdmrc
[X-:*-Core] 섹션 아래에 보면 ServerArgsLocal =-nolisten tcp
이 부분의 주석처리를 해제하면 됩니다.
답변 주신분들 모두 감사드립니다.^^
댓글 달기