데스크탑 GUI와 셸 간의 상호 작용을 관찰하는 방법은 무엇입니까?

데스크탑 GUI와 셸 간의 상호 작용을 관찰하는 방법은 무엇입니까?

예를 들어 우분투 데스크탑 위젯을 통해 볼륨을 변경하면 쉘에 명령을 내리거나 스크립트를 실행한다고 가정합니다.

실행 중인 내용을 볼 수 있나요?

답변1

일반적으로 GUI의 특정 작업은 셸 명령을 호출하지 않습니다. 이런 일이 가끔 발생하지만 흔한 일은 아닙니다. 대신 GUI와 명령줄 프로그램(셸 포함) 모두 동일한 기본 프로그래밍 인터페이스를 호출합니다.

프로그램이 어떤 작업을 수행하는지 알고 싶다면 해당 문서나 소스 코드를 확인하세요. 관찰해 볼 수는 있지만 파악하기 어려울 수도 있습니다.

리눅스에서는,스트레스나열된 프로그램시스템 호출프로그램으로 제작되었습니다. 프로그램의 프로세스 ID를 찾아(예: 명령을 통해 ps xww) 1234라고 말하고 실행합니다.

strace -p1234 -o widget.strace

관찰하고 싶은 작업을 수행한 다음 strace를 종료합니다(터미널에서 + Ctrl). C출력 파일을 보고 알아내십시오. 많이 보셨을 거에요X 서버( 특정 파일 설명을 호출 readwrite) GUI 작업으로 인해 발생합니다. 이 작업이 X 서버에서 수행되는 경우 프로토콜을 추가로 분석해야 합니다. 다음을 통해 원격 통화를 관찰할 수도 있습니다.D 버스; 이를 이해하려면 dbus-monitor사람이 읽을 수 있는 D-Bus 트래픽 추적을 얻으려면 실행하세요. 그렇지 않으면 프로그램이 수행하는 다른 작업을 확인하십시오.

Ubuntu의 사운드는 일반적으로 통과합니다.펄스 오디오. 애플리케이션은 D-Bus를 사용하여 Pulseaudio 서버와 통신합니다. Pulseaudio에는 볼륨 제어 pa를 포함하여 이름이 로 시작하는 프로그램에 대한 명령줄 인터페이스가 있습니다 .pavucontrol

관련 정보