mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
Issue #10826: Prevent sporadic failure in test_subprocess on Solaris due
to open door files.
This commit is contained in:
parent
5ed8b2c737
commit
ce58dc7b16
3 changed files with 15 additions and 19 deletions
|
@ -3,22 +3,22 @@ file descriptors on stdout."""
|
|||
|
||||
import errno
|
||||
import os
|
||||
import fcntl
|
||||
|
||||
try:
|
||||
_MAXFD = os.sysconf("SC_OPEN_MAX")
|
||||
except:
|
||||
_MAXFD = 256
|
||||
|
||||
def isopen(fd):
|
||||
"""Return True if the fd is open, and False otherwise"""
|
||||
try:
|
||||
fcntl.fcntl(fd, fcntl.F_GETFD, 0)
|
||||
except IOError as e:
|
||||
if e.errno == errno.EBADF:
|
||||
return False
|
||||
raise
|
||||
return True
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(','.join(str(fd) for fd in range(0, _MAXFD) if isopen(fd)))
|
||||
fds = []
|
||||
for fd in range(0, _MAXFD):
|
||||
try:
|
||||
st = os.fstat(fd)
|
||||
except OSError as e:
|
||||
if e.errno == errno.EBADF:
|
||||
continue
|
||||
raise
|
||||
# Ignore Solaris door files
|
||||
if st.st_mode & 0xF000 != 0xd000:
|
||||
fds.append(fd)
|
||||
print(','.join(map(str, fds)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue