[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
printf -u "$fd"?
From: |
Zachary Santer |
Subject: |
printf -u "$fd"? |
Date: |
Fri, 17 May 2024 22:53:54 -0400 |
Was «difference between read -u fd and read <&"$fd"» on help-bash@gnu.org
On Thu, May 16, 2024 at 12:51 AM Kerin Millar <kfm@plushkava.net> wrote:
>
> On Thu, 16 May 2024, at 3:25 AM, Peng Yu wrote:
> > Hi,
> >
> > It appears to me that read -u fd and read <&"$fd" achieve the same
> > result. But I may miss corner cases when they may be different.
> >
> > Is it true that they are exactly the same?
>
> They are not exactly the same. To write read -u fd is to instruct the read
> builtin to read directly from the specified file descriptor. To write read
> <&"$fd" entails one invocation of the dup2 syscall to duplicate the specified
> file descriptor to file descriptor #0 and another invocation to restore it
> once read has concluded. That's measurably slower where looping over read.
So here's another tangent, but has it been considered to add an option
to the printf builtin to print to a given file descriptor, rather than
stdout? If printing to a number of different file descriptors in
succession, such an option would appear to have all the same benefits
as read's -u option.
Zack
- printf -u "$fd"?,
Zachary Santer <=