aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Lib/test/support/os_helper.py11
-rw-r--r--Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst3
2 files changed, 12 insertions, 2 deletions
diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py
index 46ae53aa11a..7a67d87fb9e 100644
--- a/Lib/test/support/os_helper.py
+++ b/Lib/test/support/os_helper.py
@@ -592,10 +592,17 @@ def fd_count():
"""Count the number of open file descriptors.
"""
if sys.platform.startswith(('linux', 'freebsd', 'emscripten')):
+ fd_path = "/proc/self/fd"
+ elif sys.platform == "darwin":
+ fd_path = "/dev/fd"
+ else:
+ fd_path = None
+
+ if fd_path is not None:
try:
- names = os.listdir("/proc/self/fd")
+ names = os.listdir(fd_path)
# Subtract one because listdir() internally opens a file
- # descriptor to list the content of the /proc/self/fd/ directory.
+ # descriptor to list the content of the directory.
return len(names) - 1
except FileNotFoundError:
pass
diff --git a/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst b/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst
new file mode 100644
index 00000000000..f86ab2c37ee
--- /dev/null
+++ b/Misc/NEWS.d/next/macOS/2023-12-06-12-11-13.gh-issue-109981.mOHg10.rst
@@ -0,0 +1,3 @@
+Use ``/dev/fd`` on macOS to determine the number of open files in
+``test.support.os_helper.fd_count`` to avoid a crash with "guarded" file
+descriptors when probing for open files.