새로운 DISPLAY를 위한 추가 X 세션 열기

새로운 DISPLAY를 위한 추가 X 세션 열기

저는 X용 창 관리자를 작성하고 디버깅하고 있습니다.

내 애플리케이션에서 gdb를 실행할 수 있기를 원합니다. 이 응용 프로그램에는 X 모니터가 필요합니다. 두 개의 세션을 병렬로 실행하고 싶습니다. 하나는 개발하고 gdb와 애플리케이션을 실행하는 세션이고 다른 하나는 애플리케이션을 리디렉션하는 세션입니다.

나는 VT를 여러 번 시도했습니다.

  • gdm을 사용하여 개발 세션에 로그인합니다.
  • 다른 VT로 이동하려면 Ctrl+Alt+F3을 사용하세요(저는 Ubuntu 20.04를 사용하고 있습니다).
  • 새 X 세션 시작sudo X :2

마지막 명령은 tty2의 개발 세션과 tty1의 gdm 로그인을 포함하여 다른 모든 것을 종료합니다. 검은 화면이 남았습니다.

나도 그것을 시도했지만 startx데스크탑 환경이 열립니다(그놈처럼 보입니다). ~/.xinitrc, 를 로 변경하려고 시도했지만 unset XDG_RUNTIME_DIR && sleep 6060초 동안 다른 tty에 액세스할 수 없었습니다.

unset XDG_RUNTIME_DIR && X :2실제로는 실패하지 않고 즉시 반환됩니다.

다른 TTY에서 내 애플리케이션을 실행하고 디버깅할 수 있도록 TTY에서 별도의 X 세션을 얻으려면 어떻게 해야 합니까?

답변1

이상하게도 Ubuntu 20.04에서는 X :1 vt3 &.

그러나 나는 그것부터 시작할 수 있습니다 startx.


내 현재 솔루션:

존재하다 ~/.xinitrc:

unset XDG_RUNTIME_DIR && xhost +local: && tail -f /dev/null

XDG_RUNTIME_DIR파일을 혼합하지 마십시오. xhost다른 VT의 프로그램이 새 VT로 출력되고 tail아무런 작업도 수행하지 않고 대기할 수 있습니다.

새로운 VT(VT3)에서는 이제 .login을 사용하여 로그인하고 X 서버를 시작할 수 있습니다 startx.

그런 다음 첫 번째 VT(VT2)에서 DISPLAY명령을 사용하여 다른 VT의 변수를 확인 w하고 내 애플리케이션으로 gdb를 실행할 수 있습니다.

DISPLAY=:1 gdb ./my_app

이것은 확실히 해결 방법처럼 느껴집니다. .를 사용하여 첫 번째 서버를 종료하지 않고 새 X 서버를 시작하는 방법이 있어야 하지만 X현재로서는 이 방법만으로도 충분해 보입니다.

관련 정보