2개의 프로그램이 있습니다:
x
- 사용자에게 입력하라는 메시지를 표시합니다 stdin
.
binary
- 무언가를 에 인쇄합니다 stdout
. 인쇄하는 내용은 터미널 인코딩(UTF-8)에서 완전히 지원하지 않는 다양한 원시 바이너리 바이트로 구성됩니다. 그래서 제대로 실행할 수 없습니다. 입력의 일부가 (NOP)로 구성되어 터미널이 대체 문자로 대체되기 때문에 ./binary | ./x
잘못된 입력이 발생합니다 .x
\x90
x
다른 파일(이 경우 binary
) 에서 생성된 원시 바이너리 데이터를 프로그램에 어떻게 제공합니까 ?
답변1
당신은 당신이 설명한 대로 정확히 수행했습니다 ./binary | ./x
. 귀하의 터미널이 귀하가 입력한 문자에 만족하지 않는다고 해서 반드시 그런 \x90
것은 아닙니다 ./x
.
테스트로 시도해 보면 ./binary | od -a
해당 프로그램이 터미널에 문제를 일으키는 바이트를 읽을 수 있음을 알 수 있습니다. 대안으로 od -x
및를 사용해 볼 수도 있습니다 (이러한 옵션이 이진 데이터를 나타내는 방식을 선호할 수도 있음).od -b
od -a