mirror of
https://github.com/python/cpython.git
synced 2025-08-22 09:45:06 +00:00
Issue #18571: Implementation of the PEP 446: file descriptors and file handles
are now created non-inheritable; add functions os.get/set_inheritable(), os.get/set_handle_inheritable() and socket.socket.get/set_inheritable().
This commit is contained in:
parent
46e1ce214b
commit
daf455554b
51 changed files with 1448 additions and 317 deletions
|
@ -137,7 +137,8 @@ class socket(_socket.socket):
|
|||
def dup(self):
|
||||
"""dup() -> socket object
|
||||
|
||||
Return a new socket object connected to the same system resource.
|
||||
Duplicate the socket. Return a new socket object connected to the same
|
||||
system resource. The new socket is non-inheritable.
|
||||
"""
|
||||
fd = dup(self.fileno())
|
||||
sock = self.__class__(self.family, self.type, self.proto, fileno=fd)
|
||||
|
@ -229,6 +230,20 @@ class socket(_socket.socket):
|
|||
self._closed = True
|
||||
return super().detach()
|
||||
|
||||
if os.name == 'nt':
|
||||
def get_inheritable(self):
|
||||
return os.get_handle_inheritable(self.fileno())
|
||||
def set_inheritable(self, inheritable):
|
||||
os.set_handle_inheritable(self.fileno(), inheritable)
|
||||
else:
|
||||
def get_inheritable(self):
|
||||
return os.get_inheritable(self.fileno())
|
||||
def set_inheritable(self, inheritable):
|
||||
os.set_inheritable(self.fileno(), inheritable)
|
||||
get_inheritable.__doc__ = "Get the inheritable flag of the socket"
|
||||
set_inheritable.__doc__ = "Set the inheritable flag of the socket"
|
||||
|
||||
|
||||
def fromfd(fd, family, type, proto=0):
|
||||
""" fromfd(fd, family, type[, proto]) -> socket object
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue