![출력 대기 중: xinput 테스트를 grep으로 전송할 때 예기치 않은 동작이 발생합니다.](https://linux55.com/image/137296/%EC%B6%9C%EB%A0%A5%20%EB%8C%80%EA%B8%B0%20%EC%A4%91%3A%20xinput%20%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%A5%BC%20grep%EC%9C%BC%EB%A1%9C%20%EC%A0%84%EC%86%A1%ED%95%A0%20%EB%95%8C%20%EC%98%88%EA%B8%B0%EC%B9%98%20%EC%95%8A%EC%9D%80%20%EB%8F%99%EC%9E%91%EC%9D%B4%20%EB%B0%9C%EC%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
뒤쪽에
% 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