| # NOTE: win32 support is currently experimental, and not recommended |
| # for production use. |
| |
| |
| from __future__ import absolute_import, division, with_statement |
| import ctypes |
| import ctypes.wintypes |
| |
| # See: http://msdn.microsoft.com/en-us/library/ms724935(VS.85).aspx |
| SetHandleInformation = ctypes.windll.kernel32.SetHandleInformation |
| SetHandleInformation.argtypes = (ctypes.wintypes.HANDLE, ctypes.wintypes.DWORD, ctypes.wintypes.DWORD) |
| SetHandleInformation.restype = ctypes.wintypes.BOOL |
| |
| HANDLE_FLAG_INHERIT = 0x00000001 |
| |
| |
| def set_close_exec(fd): |
| success = SetHandleInformation(fd, HANDLE_FLAG_INHERIT, 0) |
| if not success: |
| raise ctypes.GetLastError() |