출력 대기 중: xinput 테스트를 grep으로 전송할 때 예기치 않은 동작이 발생합니다.

출력 대기 중: xinput 테스트를 grep으로 전송할 때 예기치 않은 동작이 발생합니다.

뒤쪽에

% xkbset -repeatkeys
% xinput test 14 | grep -m 1 "key release 36"

예상대로 두 번째로 계속 돌아왔지만 아무 일도 일어나지 않았습니다. 두 번째 수익을 공개한 후 나는 다음과 같은 결과를 얻습니다.

key release 36

이제 프로그램이 즉시 종료되기를 원하지만 종료하기 전에 Shift가 작동하는 경우에도 추가 키 입력을 기다립니다. 나는 이것이 xinput이 추가 라인을 생성하게 한다고 생각하지만 이것이 왜 필요한지 이해하지 못합니다. grep은 이미 찾고 있던 라인을 찾았습니다. 그럼 지금 그만두는 게 어때요?

추신. 대답이 맞는 것 같고 다음을 수행하여 원하는 결과를 얻을 수 있었습니다.

% xinput test 14 | { grep -m 1 "key release 36" && killall xinput ; }

답변1

grep첫 게임 이후에 그만둘 수도 있습니다. 여전히 실행 중 입니다 xinput. 다음에 무언가를 출력하려고 시도할 때 파이프가 닫혀 있다는 것만 알아차립니다.

예를 들어 여기서는 첫 번째 pgrep만 실행 중인 grep프로세스를 찾았지만 왼쪽의 절전 모드는 여전히 발생합니다.

$ ( pgrep grep >&2; echo xxx; pgrep grep >&2; sleep 3; echo yyy ) |grep -m1 xxx
29149
xxx

관련 정보