On Tue, Oct 28, 2025 at 10:00:00 +0100, Andreas Schwab wrote:
> On Okt 28 2025, Martin D Kealey wrote:
> 
> > laas:~# cat t.sh
> > #!/bin/bash
> > echo 60 > /proc/sys/kernel/panic
> > laas:~# strace -f t.sh
> > ...
> > writev(1, [{"60", 2}, {"\n", 1}], 2) = 2
> > writev(1, [{"", 0}, {"\n", 1}], 2) = -1 EINVAL (Invalid argument)
> 
> Where is the second writev coming from?  "echo 60" should output
> $'60\n', and nothing else.

writev() is supposed to return the number of bytes written.  Bash
tried to write 3 bytes, but the return value was 2.  I guess it
concludes that the newline got lost in transit, and tries to write
it again.

Reply via email to