Right. Upon reflection the best approach is probably just to launch a thread to block on wait(). It won't consume any CPU cycles waiting anyway.
On Mar 8, 2010, at 1:08 PM, Andrei Alexandrescu wrote: > Like Sean, I don't think going with SIGCHILD is a good idea. It's not only > about thread safety, but mostly about reentrancy of system functions. > > Andrei > > Lars Tandle Kyllingstad wrote: >> I didn't even think of that, but you're right, of course. The parent gets a >> SIGCHLD when the child terminates. I wonder if it's possible to restrict >> the callback so that it's safe to call it from a signal handler? It would >> have to be nothrow, that's for sure, but that's probably not enough. It is >> all too easy to make thread-unsafe code with signal handlers. Is it >> possible to mark functions or delegates with 'shared', so they only operate >> on shared data? >> -Lars >> Sean Kelly wrote: >>> In *nix you can set a signal handler to be notified when a child process >>> completes. But the restrictions on what can be done inside a signal >>> handler are such that maybe executing a callback from inside one isn't a >>> good idea anyway. >>> >>> On Mar 8, 2010, at 12:22 AM, Lars Tandle Kyllingstad wrote: >>> >>>> I don't know any way of doing this besides spawning a separate thread that >>>> a) starts the process, b) waits for it to complete, and c) calls the >>>> callback function/delegate. >>>> >>>> Is this what you had in mind? >>>> >>>> -Lars >>>> >>>> >>>> Sean Kelly wrote: >>>>> I'm not sure if this is supported in Windows, but if so, it might be nice >>>>> if I could set a callback that would be executed when the process >>>>> completes. >>>>> On Mar 3, 2010, at 9:44 AM, Lars Tandle Kyllingstad wrote: >>>>>> Hi, >>>>>> >>>>>> Recently, I found myself in need of the functionality that is (or should >>>>>> have been) in std.process, but unfortunately I found it lacking in many >>>>>> respects. Assuming that improving it currently isn't at the top of the >>>>>> to-do list for Phobos, I decided not to wait, and rather to write my own >>>>>> version. If you want you can check it out here: >>>>>> >>>>>> Code: http://github.com/kyllingstad/ltk/blob/master/ltk/process.d >>>>>> Docs: http://kyllingen.net/code/ltk/doc/process.html >>>>>> >>>>>> I don't know if any of it is usable for Phobos, but if it is, I'd be >>>>>> happy to contribute. >>>>>> >>>>>> I've tried to write it in the style of std.concurrency, with a function >>>>>> spawnProcess() that returns a Pid struct. Currently it is for POSIX >>>>>> only, since I have no experience at all with the Windows API. >>>>>> >>>>>> -Lars >>>>>> _______________________________________________ >>>>>> phobos mailing list >>>>>> [email protected] >>>>>> http://lists.puremagic.com/mailman/listinfo/phobos >>>>> _______________________________________________ >>>>> phobos mailing list >>>>> [email protected] >>>>> http://lists.puremagic.com/mailman/listinfo/phobos >>>> >>>> -- >>>> Lars Tandle Kyllingstad >>>> @: [email protected] >>>> #: 40233221 >>>> w: http://www.kyllingen.net >>>> _______________________________________________ >>>> phobos mailing list >>>> [email protected] >>>> http://lists.puremagic.com/mailman/listinfo/phobos >>> >>> _______________________________________________ >>> phobos mailing list >>> [email protected] >>> http://lists.puremagic.com/mailman/listinfo/phobos > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
