[issue4708] os.pipe should return inheritable descriptors (Windows)

2014-02-13 Thread STINNER Victor

STINNER Victor added the comment:

The PEP 446 has been implemented in Python 3.4 and all file descriptors and 
sockets are now created non-inheritable by default. Use os.set_inheritable() to 
make the pipe fds inheritable.

--
resolution:  -> fixed
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-08-09 Thread STINNER Victor

STINNER Victor added the comment:

os.pipe() creates non-inheritable pipes on Windows, whereas it creates 
inheritable pipes on UNIX. IMO the reason is an implementation artifact: 
os.pipe() calls CreatePipe() on Windows (native API), whereas it calls pipe() 
on UNIX (POSIX API). The call to CreatePipe() was added in Python in 1994, 
before the introduction of pipe() in the POSIX API in Windows 98.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-31 Thread Tim Golden

Changes by Tim Golden :


--
assignee: tim.golden -> 

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-24 Thread STINNER Victor

STINNER Victor added the comment:

Changing the default inheritance value of os.pipe() is not acceptable because 
it would break backward compatibility.

Giving access to Windows extra parameter is nice, but we have to find a way to 
propose a portable API. That's what I'm trying to do with the PEP 446 (and it's 
previous version, the PEP 433).

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-09 Thread Richard Oudkerk

Richard Oudkerk added the comment:

Oops.  I confused os.popen() with os.spawn*().  os.spawnv() IS still 
implemented using spawnv() in Python 3.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-09 Thread Richard Oudkerk

Richard Oudkerk added the comment:

> - would improve POSIX compatibility, it mimics what os.pipe()
> does on those OS

I disagree.

On Windows fds can only be inherited if you start processes using the spanwn*() 
family of functions.  If you start them using CreateProcess() then the 
underlying *handles* are inherited, but the *fds* are not.

In Python 2, os.spawn*() used spawn*(), so making os.pipe() return inheritable 
fds would have made some sense.  But in Python 3 os.spawn*() is implemented 
using subprocess/CreateProcess so fds will NOT be inherited (even if the 
wrapped handles are).

Note that subprocess *does* know how to redirect the standard streams to fds 
returned by os.pipe().

So for Python 3 I don't think there is any point in changing things.

--

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-08 Thread Antoine Pitrou

Changes by Antoine Pitrou :


--
nosy: +sbt

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2013-07-08 Thread Christian Heimes

Christian Heimes added the comment:

Victor, this fits nicely with your recent PEP.

--
nosy: +christian.heimes, haypo
versions: +Python 3.4 -Python 2.6, Python 2.7, Python 3.0, Python 3.1

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2010-08-11 Thread Daniel Goertzen

Changes by Daniel Goertzen :


--
nosy: +Daniel.Goertzen

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2010-08-06 Thread Tim Golden

Changes by Tim Golden :


--
assignee:  -> tim.golden
nosy: +tim.golden

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2009-01-19 Thread Jesse Noller

Changes by Jesse Noller :


--
nosy: +jnoller

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2009-01-14 Thread Aaron Brady

Aaron Brady  added the comment:

This is currently accomplished in 'multiprocessing.forking' with a
'duplicate' function.

Use (line #213):
rfd, wfd = os.pipe()

# get handle for read end of the pipe and make it inheritable
rhandle = duplicate(msvcrt.get_osfhandle(rfd), inheritable=True)

Definition (line #192).

Should it be included in the public interface and documented, or perhaps
a public entry point to it made?

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2008-12-26 Thread Gabriel Genellina

Gabriel Genellina  added the comment:

Patch to posixmodule.c including test case and documentation updates.
Note: I've only run the tests on Windows.

--
keywords: +patch
Added file: http://bugs.python.org/file12460/inheritable_pipes.diff

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2008-12-21 Thread Gabriel Genellina

Gabriel Genellina  added the comment:

>From the thread in c.l.p: 

Pros (of changing os.pipe() to return inheritable pipes):
 
- as it isn't explicitely documented whether os.pipe() returns 
inheritable pipes or not, both versions are "right" according to the 
documentation.

- if someone relies on pipes being non-inheritable on Windows (why?), 
this is undocumented behaviour, and Python has the right to change it.

- would improve POSIX compatibility, it mimics what os.pipe()
does on those OS

- inheritable pipes are less surprising for guys coming from other OS

- inheritable pipes are a lot more useful than non-inheritable ones 
when doing IPC (probably its main usage).
 
Cons:
 
- os.pipe has behaved that way since long time ago.

- some programs *might* break, if they relied on pipes being 
non-inheritable on Windows, even if that was undocumented behaviour.

--
nosy: +gagenellina

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue4708] os.pipe should return inheritable descriptors (Windows)

2008-12-20 Thread Aaron Brady

New submission from Aaron Brady :

os.pipe should return inheritable descriptors on Windows.

Patch below, test attached.  New pipe() returns descriptors, which
cannot be inherited.  However, their permissions are set correctly, so
msvcrt.get_osfhandle and msvcrt.open_osfhandle can be used to obtain an
inheritable handle.

Docs should contain a note to the effect.  'On Windows, use
msvcrt.get_osfhandle to obtain a handle to the descriptor which can be
inherited.  In a subprocess, use msvcrt.open_osfhandle to obtain a new
corresponding descriptor.'

--- posixmodule_orig.c  2008-12-20 20:01:38.296875000 -0600
+++ posixmodule_new.c   2008-12-20 20:01:54.359375000 -0600
@@ -6481,8 +6481,12 @@
HANDLE read, write;
int read_fd, write_fd;
BOOL ok;
+   SECURITY_ATTRIBUTES sAttribs;
Py_BEGIN_ALLOW_THREADS
-   ok = CreatePipe(&read, &write, NULL, 0);
+   sAttribs.nLength = sizeof( sAttribs );
+   sAttribs.lpSecurityDescriptor = NULL;
+   sAttribs.bInheritHandle = TRUE;
+   ok = CreatePipe(&read, &write, &sAttribs, 0);
Py_END_ALLOW_THREADS
if (!ok)
return win32_error("CreatePipe", NULL);

--
components: Library (Lib), Windows
files: os_pipe_test.py
messages: 78136
nosy: castironpi
severity: normal
status: open
title: os.pipe should return inheritable descriptors (Windows)
type: behavior
versions: Python 2.6, Python 2.7, Python 3.0, Python 3.1
Added file: http://bugs.python.org/file12408/os_pipe_test.py

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com