The new std.process is ready for review
Vladimir Panteleev
vladimir at thecybershadow.net
Sun Mar 10 09:07:26 PDT 2013
On Sunday, 10 March 2013 at 16:04:51 UTC, Marco Leise wrote:
> Am Sat, 09 Mar 2013 13:35:26 -0500
> schrieb "Steven Schveighoffer" <schveiguy at yahoo.com>:
>
>> On Sat, 09 Mar 2013 11:05:14 -0500, Lars T. Kyllingstad
>> <public at kyllingen.net> wrote:
>>
>> > 1. Make a "special" spawnProcess() function for pipe
>> > redirection.
>> > 2. Use the "process object" approach, like Tango and Qt.
>> > 3. After fork(), in the child process, loop over the full
>> > range of possible file descriptors and close the ones we
>> > don't want open.
>> >
>> > The last one would let us keep the current API (and would
>> > have the added benefit of cleaning up unused FDs) but I
>> > have no idea how it would impact performance.
>>
>> I think 3 is the correct answer, it is consistent with
>> Windows, and the most logical behavior. For instance, if
>> other threads are open and doing other things that aren't
>> related (like network sockets), those too will be inherited!
>> We should close all file descriptors.
>
> So that means on Posix any programming scheme involving
> passing open descriptors on to child processes is not going to
> work with std.process? Not that I know of any, but if that's
> what will happen it is good to know the cost. ;)
I think the idea is that if you rely on such platform-specific
behavior, you probably shouldn't be using std.process in the
first place - as its goal is to provide high-level cross-platform
abstractions for the most common operations, rather than try to
cover all features exposed by all operating system APIs.
More information about the Digitalmars-d
mailing list