[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>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- File descriptor of process substitution unexpectedly persisting,
<=