Output from strace for non-empty stdin:
execve("./cat", ["./cat"], 0x7fff610af090 /* 37 vars */) = 0 sendfile(1, 0, NULL, 1048576) = 4 sendfile(1, 0, NULL, 1048576) = 0 close(0) = 0 exit(0) = ? +++ exited with 0 +++ Output from strace for empty stdin:
execve("./cat", ["./cat"], 0x7fff610af090 /* 37 vars */) = 0 sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) sendfile(1, 0, NULL, 1048576) = -1 EINVAL (Invalid argument) ... uname -a:5.3.8-arch1-1 #1 SMP PREEMPT @1572357769 x86_64 GNU/Linux
sudo pacman -Syu --noconfirm, so I think everything got updated.EINVALlooks about the right error if one of the fd's isn't open. Is there a question in here?