[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: bash sockets: printf \x0a does TCP fragmentation
From: |
Ilkka Virta |
Subject: |
Re: bash sockets: printf \x0a does TCP fragmentation |
Date: |
Sat, 22 Sep 2018 13:38:06 +0300 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 |
On 22.9. 02:34, Chet Ramey wrote:
Newline? It's probably that stdout is line-buffered and the newline causes
a flush, which results in a write(2).
Mostly out of curiosity, what kind of buffering logic does Bash (or the
builtin printf in particular) use? It doesn't seem to be the usual stdio
logic where you get line-buffering if printing to a terminal and block
buffering otherwise. I get a distinct write per line even if the stdout
of Bash itself is redirected to say /dev/null or a pipe:
$ strace -etrace=write bash -c 'printf "foo\nbar\n"' > /dev/null
write(1, "foo\n", 4) = 4
write(1, "bar\n", 4) = 4
+++ exited with 0 +++
--
Ilkka Virta / itvirta@iki.fi