[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: printf -u "$fd"?
From: |
Kerin Millar |
Subject: |
Re: printf -u "$fd"? |
Date: |
Sun, 19 May 2024 07:38:27 +0100 |
User-agent: |
Cyrus-JMAP/3.11.0-alpha0-456-gcd147058c-fm-hotfix-20240509.001-g0aad06e4 |
On Sat, 18 May 2024, at 3:53 AM, Zachary Santer wrote:
> 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.
Until now, not that I am aware of. I normally apply a redirection to a group
command in such cases, though it still results in exactly two dup2 calls.
--
Kerin Millar
- printf -u "$fd"?, Zachary Santer, 2024/05/17
- Re: printf -u "$fd"?,
Kerin Millar <=
- Re: printf -u "$fd"?, alex xmb sw ratchev, 2024/05/19
- Re: printf -u "$fd"?, Chet Ramey, 2024/05/20
- Re: printf -u "$fd"?, Zachary Santer, 2024/05/21
- Re: printf -u "$fd"?, Chet Ramey, 2024/05/21
- Re: printf -u "$fd"?, Zachary Santer, 2024/05/21
- Re: printf -u "$fd"?, Chet Ramey, 2024/05/21
- Re: printf -u "$fd"?, Zachary Santer, 2024/05/22
- Re: printf -u "$fd"?, Zachary Santer, 2024/05/22