Bash에서는 이 명령이 hexdump -C /dev/urandom > hexdump.txt
종료되지 않습니다.
파일 시스템이 가득 차더라도 무한정 계속됩니다.
read(0, "\326\210L0\rL<\177\207\214\3\2237\vi\315\232P\303\275\345\26jDy\272\262\233\304\340g\7"..., 4096) = 4096
write(1, " ac 78 78 bf 6e 54 de 64 c8 89 "..., 4096) = 4096
write(1, "[|\n012f40d0 1c 14 ea 0b 12 8a 9"..., 4096) = 4096
write(1, "M......Uo/9i1|\n012f4410 2c f8 3"..., 4096) = 4096
write(1, " 1a 7c |{...wSZq5/.{...||\n012f4"..., 4096) = -1 ENOSPC (No space left on device)
write(1, "25 fa d5 67 7a 93 |.=...j}V>.%."..., 4096) = -1 ENOSPC (No space left on device)
read(0, "\336&v\266I\10\254\3551\225\370\"^g\224\10\5\17h\tNkA.(\374\302\333`K/\332"..., 4096) = 4096
write(1, " ad 7a 3f 0c f4 0e a0 b8 8d |."..., 4096) = -1 ENOSPC (No space left on device)
write(1, "ab 1c f4 79 f1 49 20 0e a1 f3 7"..., 4096) = -1 ENOSPC (No space left on device)
종료되는 경우(입력이 무한하지 않은 경우) 여전히 마지막에 쓰기 오류를 보고하지만 그때쯤이면 입력을 완전히 소비하여 셀 수 없이 많은 ENOSPC 오류가 발생합니다.
그런 다음 다른 명령을 테스트했습니다. busybox hexdump
같은 문제가 있습니다. od
같은 문제가 있습니다. strings
같은 문제가 있습니다 ...
그렇다면 여기에는 util-linux, coreutils, binutils 등이 포함됩니까?
오류를 기록하면 , 가 종료되어 전체 파이프라인이 종료되기 때문에 이와 hexdump -C /dev/urandom | cat > hexdump.txt
같은 문제를 해결할 수 있습니다 . 하지만 이상해 보입니다.cat
dd
pv
이것은 포괄적인 버그입니까, 아니면 이러한 유틸리티가 모든 입력을 소비하도록 요구하는 표준이 있습니까?