diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2013-08-28 00:53:59 +0200 |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2013-08-28 00:53:59 +0200 |
commit | e5883d6d95989121670eca012dd5bde1721747e7 (patch) | |
tree | 0a3d97e7d4c3fd6e7381ae9357a236333315f08d /Lib/socket.py | |
parent | 8ccecb68f7c8ca1e6e4cdde3a3a8114c737d43ae (diff) | |
download | cpython-e5883d6d95989121670eca012dd5bde1721747e7.tar.gz |
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().
Diffstat (limited to 'Lib/socket.py')
-rw-r--r-- | Lib/socket.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/Lib/socket.py b/Lib/socket.py index 96f8ed0c7f..81864f5113 100644 --- a/Lib/socket.py +++ b/Lib/socket.py @@ -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 |