bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

File descriptor of process substitution unexpectedly persisting


From:
Subject: File descriptor of process substitution unexpectedly persisting
Date: Fri, 21 Jun 2019 19:58:22 +0100

Hi,

As tested interactively with bash 5.0.7(1) and GNU/Linux, the following command 
prints a constant number of active file descriptors, as expected:

$ while :; do { read; } < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* | wc 
-l; done
6
6
6
6
6
... etc

However, merely by assigning a variable prior to the loop, though within the 
same line, the number will continuously grow:

$ var=0; while :; do { read; } < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* 
| wc -l; done
6
7
8
9
10
... etc

If then adjusted so that the read command is not part of a compound command, 
normality is restored:

$ var=0; while :; do read < <(:); sleep 0.5; printf %s\\n /proc/self/fd/* | wc 
-l; done
5
5
5
5
5
... etc

I noticed this behaviour upon running out of file descriptors after executing 
structurally similar code that deliberately utilises a compound command to read 
twice, thus discarding the first line of input.

-- 
Kerin Millar <kfm@plushkava.net>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]