Bug #1460564: document that socket.fromfd() duplicates the given

file descriptor.
This commit is contained in:
Georg Brandl 2006-04-01 07:33:08 +00:00
parent e071b001ca
commit dcfdae7d72
2 changed files with 8 additions and 6 deletions

View File

@ -317,10 +317,11 @@ Availability: \UNIX. \versionadded{2.4}
\end{funcdesc} \end{funcdesc}
\begin{funcdesc}{fromfd}{fd, family, type\optional{, proto}} \begin{funcdesc}{fromfd}{fd, family, type\optional{, proto}}
Build a socket object from an existing file descriptor (an integer as Duplicate the file descriptor \var{fd} (an integer as returned by a file
returned by a file object's \method{fileno()} method). Address family, object's \method{fileno()} method) and build a socket object from the
socket type and protocol number are as for the \function{socket()} function result. Address family, socket type and protocol number are as for the
above. The file descriptor should refer to a socket, but this is not \function{socket()} function above.
The file descriptor should refer to a socket, but this is not
checked --- subsequent operations on the object may fail if the file checked --- subsequent operations on the object may fail if the file
descriptor is invalid. This function is rarely needed, but can be descriptor is invalid. This function is rarely needed, but can be
used to get or set socket options on a socket passed to a program as used to get or set socket options on a socket passed to a program as

View File

@ -3168,7 +3168,8 @@ socket_fromfd(PyObject *self, PyObject *args)
PyDoc_STRVAR(fromfd_doc, PyDoc_STRVAR(fromfd_doc,
"fromfd(fd, family, type[, proto]) -> socket object\n\ "fromfd(fd, family, type[, proto]) -> socket object\n\
\n\ \n\
Create a socket object from the given file descriptor.\n\ Create a socket object from a duplicate of the given\n\
file descriptor.\n\
The remaining arguments are the same as for socket()."); The remaining arguments are the same as for socket().");
#endif /* NO_DUP */ #endif /* NO_DUP */
@ -4052,7 +4053,7 @@ init_socket(void)
PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW); PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW);
PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG); PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG);
PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE); PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE);
#endif #endif /* AF_NETLINK */
#ifdef AF_ROUTE #ifdef AF_ROUTE
/* Alias to emulate 4.4BSD */ /* Alias to emulate 4.4BSD */
PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE); PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE);