Sample Header Ad - 728x90

Why does `tail -c 4097 /dev/zero` exit immediately instead of blocking?

14 votes
1 answer
725 views
I observe that, on Ubuntu 24.04.2 with coreutils version 9.4-3ubuntu6, running:
bash
$ tail -c 4097 /dev/zero
$ echo $?
0
exits immediately with a status code of 0. I expected the command to block indefinitely since /dev/zero is an endless stream. In contrast, the following commands behave as expected (i.e., they block until interrupted):
bash
$ tail -c 4096 /dev/zero
^C
$ echo $?
130
$ cat /dev/zero | tail -c 4097
^C
$ echo $?
130
## Debug attempt The strace output shows differences between the two invocations: | strace tail -c 4096 /dev/zero | strace tail -c 4097 /dev/zero | |---------------------------------------------------------------------|---------------------------------------------------------------------| | … | … | | close(3) = 0 | close(3) = 0 | | openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3 | openat(AT_FDCWD, "/dev/zero", O_RDONLY) = 3 | | fstat(3, {st_mode=S_IFCHR\|0666, st_rdev=makedev(0x1, 0x5), …}) = 0 | fstat(3, {st_mode=S_IFCHR\|0666, st_rdev=makedev(0x1, 0x5), …}) = 0 | | lseek(3, -4096, SEEK_END) = 0 | lseek(3, -4097, SEEK_END) = 0 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | read(3, "\0\0\0\0\0\0\0\0\0\\…, 4097) = 4097 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | fstat(1, {st_mode=S_IFIFO\|0600, st_size=0, …}) = 0 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | write(1, "\0\0\0\0\0\0\0\0\0\\…, 4096 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | close(3) = 0 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | write(1, "\0", 1) = 1 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | close(1) = 0 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | close(2) = 0 | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | exit_group(0) = ? | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | ~~+~~ exited with 0 ~~+~~ | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | | | read(3, "\0\0\0\0\0\0\0\0\00"…, 8192) = 8192 | | | … | |
Asked by Isidro Arias (161 rep)
Apr 16, 2025, 10:02 AM
Last activity: Apr 17, 2025, 08:25 AM