[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Undocumented feature: Unnamed fifo '<(:)'
From: |
Chet Ramey |
Subject: |
Re: Undocumented feature: Unnamed fifo '<(:)' |
Date: |
Tue, 30 Jun 2020 12:30:53 -0400 |
User-agent: |
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 |
On 6/28/20 9:49 AM, felix wrote:
> Bash Versions: 3.2.57(1)-release, 5.0.3(1)-release, 5.1.0(1)-alpha
>
> In order to reduce forks and make some tasks a lot quicker, I run
> forked filters as background tasks, with dedicated I/O fd.
>
> For sample, to convert human datetime to UNIX SECONDS, instead of running
> _out=$(date -d "$_string" +%s)
> many time in same script, I run something like:
>
> _fifo=$(mktemp -u /tmp/fifo-XXXXXXXX)
> mkfifo $_fifo
> exec 9> >(exec stdbuf -o0 date -f - +%s >$_fifo 2>&1)
> exec 8<$_fifo
> rm $_fifo
>
> Then to convert human datetime to UNIX SECONDS:
>
> echo >&9 $_string
> read -t 1 -u 8 _out
>
> become a lot quicker!
>
> But I recently discovered another way for this:
>
> exec 8<> <(:)
> exec 9> >(exec stdbuf -o0 date -f - +%s >&8 2>&8)
>
> usable in same way:
>
> echo >&9 $_string
> read -t 1 -u 8 _out
>
> maybe a little more quicker...
But not guaranteed to work everywhere, especially those systems that use
/dev/fd and pipes for this instead of FIFOs. (And lack `stdbuf'.)
> There is maybe something to document or even create a new feature
> about open2 and open3...
No, it's not. But if it works for you, go ahead and use it. Just be
prepared to have to change it if necessary.
--
``The lyf so short, the craft so long to lerne.'' - Chaucer
``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, UTech, CWRU chet@case.edu http://tiswww.cwru.edu/~chet/
- Re: Undocumented feature: Unnamed fifo '<(:)', (continued)
Re: Undocumented feature: Unnamed fifo '<(:)', Oğuz, 2020/06/28
Re: Undocumented feature: Unnamed fifo '<(:)', Pierre Gaston, 2020/06/28
Re: Undocumented feature: Unnamed fifo '<(:)', Greg Wooledge, 2020/06/29
Re: Undocumented feature: Unnamed fifo '<(:)',
Chet Ramey <=