포크된 프로세스가 창을 열 때까지 기다립니다.

포크된 프로세스가 창을 열 때까지 기다립니다.

다음과 같은 스크립트를 만들려고 합니다.

st -n dropdown &
pid=$(xdotool search --classname dropdown)

st터미널 에뮬레이터입니다

생성된 st에서 일부 명령을 실행하기 위해 xdotool을 사용하려고 합니다. 안타깝게도 실제 st 터미널이 시작되기 전에 다음 명령이 st -n dropdown &실행되므로 pid가 없습니다. 언제든지 뒤에 놓을 수 있지만 sleep 0.1어떤 경우에는(예: 구형 시스템에서) 터미널을 시작하는 데 0.1초 이상 걸릴 수 있습니다. 나머지 스크립트를 실행하기 전에 터미널이 시작될 때까지 기다리는 방법이 있습니까?

wait명령은 프로세스가 완료될 때까지 기다리기 때문에 작동하지 않습니다. 이 경우에는 프로세스 st가 종료될 때까지 기다리기 때문에 이는 제가 원하는 것이 아닙니다.

답변1

xtoolwaitX 응용 프로그램을 시작하고 해당 창을 매핑할 때까지 기다리는 유틸리티입니다. 그런 다음 제어권을 원래 셸 세션으로 반환합니다.

.xinitrc주로 개인 이나 문서 에서 사용됩니다 .xsession.

다음과 같은 스크립트에서 사용할 수 있습니다.

xtoolwait st -n dropdown
pid=$(xdotool search --classname dropdown)

xtoolwait두 번째 명령은 해당 창이 매핑되었음을 감지할 st때까지 실행을 시작하지 않습니다 . 첫 번째 줄이 누락되었습니다 &(필요하지 않음). 이는 두 번째 명령이 PID를 올바르게 찾는 데 충분한 지연을 제공할 수 있습니다.

관련 정보