프로그램이 ENOSPC 오류로 종료되어야 합니까?

프로그램이 ENOSPC 오류로 종료되어야 합니까?

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같은 문제를 해결할 수 있습니다 . 하지만 이상해 보입니다.catddpv

이것은 포괄적인 버그입니까, 아니면 이러한 유틸리티가 모든 입력을 소비하도록 요구하는 표준이 있습니까?

관련 정보