파일 설명자 0에서 파일로 n 바이트를 읽는 방법은 무엇입니까? 바이트는 어떤 값이든 될 수 있습니다.

파일 설명자 0에서 파일로 n 바이트를 읽는 방법은 무엇입니까? 바이트는 어떤 값이든 될 수 있습니다.

파일에서 특정 바이트 수를 읽고 fd0이를 파일에 써야 합니다. 바이트는 어떤 값이든 가질 수 있습니다.

dd바이트 단위 로 멈추기 때문에 못 쓸 것 같아요 EOF. 내 것은 키보드가 아니기 때문에 if=/dev/stdin작동하지 않습니다.fd0

답변1

입력 파일이 제공되지 않으면 dd(및 기타 많은 unix 명령)는 기본적으로 stdin에서 입력을 가져옵니다.

stdin은 키보드일 필요가 없으며 종종 그렇지 않습니다.

dd 명령은 특히 이진 데이터를 복사하는 데 사용됩니다. 그렇지 않더라도 EOF유닉스에서는 바이트가 아닙니다. 해당 소스에 대한 데이터가 더 이상 없음을 나타내는 파일 설명자에 대한 조건입니다.

키보드(또는 더 중요한 것은 tty)에서 Ctrl-D제어 문자는 EOF가 아니지만 (기본적으로) tty가 Backspace입력 버퍼에서 문자를 제거하는 방법과 유사하게 EOF 조건을 입력하게 합니다. 이는 tty가 "raw" 모드가 아닌 "cooked" 모드에 있고 EOF의 제어 문자가 tty에서 변경될 수 있는 경우에만 의미가 있습니다.

n 바이트(여기서 n은 숫자)를 읽는 완벽하게 실현 가능한 솔루션은 다음과 같습니다.dd count=1 bs=n

키보드에서 여러 줄을 입력하거나 모든 데이터를 보내기 전에 일시 중지가 있는 경우 dd는 이를 블록 경계로 해석합니다. 추가하면 iflag=fullbockdd는 블록을 종료하기 전에 전체 10바이트를 기다리게 됩니다.

관련 정보