XWindow는 동일한 순간에 전송된 여러 ClentMessage를 무시합니다.

StackOverflow https://stackoverflow.com/questions/66111

  •  09-06-2019
  •  | 
  •  

문제

레거시 XWindows 애플리케이션을 개발하는 동안 흥미로운 문제에 직면했습니다.

설명할 필요가 없는 이유로 명령줄 유틸리티에서 GUI 앱으로 ClientMessage를 보냅니다. 메시지의 목적은 일부 측면 파이프를 통해 동기 통신 프로세스를 트리거하는 것이므로 대부분의 메시지는 동일한 내용을 갖게 됩니다. .두 개의 메시지를 보내다가 한 개만 전달되는 경우도 있었습니다.나는 두 메시지 모두 동일한 내용을 가지고 있고 동일한 초에 전송되었다는 사실을 추적했습니다(IOW, 전송의 로그 타임스탬프가 동일한 숫자였습니다).메시지에 더미 내용을 추가하여 모두 다르게 만들자마자 문제는 사라졌습니다.

이는 두 개의 서로 다른 X 서버에서 발생했습니다.vncserver 및 Exceed.내가 인식하지 못하는 일부 XWindows 기능(일종의 메시지 조절/압축)이 발생하고 있습니까?이런 일을 겪은 사람이 있습니까?

도움이 되었습니까?

해결책

X 서버는 내가 알고 있는 클라이언트 메시지를 절대 압축해서는 안 되지만 일부 X 툴킷(Motif, Xaw 등)은 이를 압축할 수도 있습니다.이것이 제가 가장 먼저 찾아야 할 것입니다. 아마도 메시지를 수신하는 GUI 앱이 애플리케이션 코드가 보기 전에 툴킷 내부 어딘가에서 압축되고 있을 것입니다.

그런 다음 vncserver와 extra는 모두 다른 X 서버보다 원격 사용에 더 중점을 둘 수 있으며 아마도 잘못된 압축 해킹이 포함될 수 있습니다.나는 많은 X 사양을 읽고 많은 X 코드를 작성했지만 이러한 동작에 대해 들어본 적이 없습니다.

예상치 못한 일이지만, 명령줄 앱이 종료되기 전에 명령줄 앱 끝에 XFlush() 또는 XSync()가 있는지 확인하고 종료하기 전에 해당 메시지를 소켓에 기록해야 합니다.하지만 이것이 문제라면 메시지 내용이 왜 중요한지 모르겠습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top