Here is one implementation which I based mine: https://github.com/lucastheisen/ipc-open3-callback

Okay. That makes more sense than your original description -- though I see how you arrived at that description.

Essentially, they are doing the same thing as Win32::SocketPairopen2() and Win32::SocketPairopen2_5() (original author:salva), in that they are redirecting the outputs from the commands via socket pairs, which are selectable.

I'm like the idea of IPC::Open3::Callback. It is a very clever way to address both the problems with IPC::Open3.

However, as it stands, it steals both the pid of the subprocess, and the stdin; which make it less useful than it could be. I can see myself stealing the idea of the callbacks and producing my own version that corrects for those. (Assuming the author doesn't modify his interface before sending it to cpan :)

With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.

"Science is about questioning the status quo. Questioning authority".

In the absence of evidence, opinion is indistinguishable from prejudice.

You're correct, there is none. It shouldn't be that hard to implement it by creating a related attribute and setting it in the runCommand method call. Since I already have one implemented in Siebel::Srvrmgr::Daemon and I really need to have complete control, I'm not considering IPC::Open3::Callback right now (but it would be worth checking it again later).

During additional tests yesterday, I was able to runSiebel::Srvrmgr::Daemon several times without problem in Linux and being able to read STDERR as well. Unfortunately, I got the same error (ECONNRESET) that I was getting in Windows 7 when I repeated the test today:

It's also a more insistent form of close because it also disables the file descriptor in any forked copies in other processes.

Since select and Scalar::Utilopenhandle tells me that the handles are OK for reading/writing, I clueless why this error happens. It seems to be related to some inactivity with the child process because if I keep calling run method sequentially, everything keeps working as expected. If I "wait" a bit, the error happens.

This is the modified version of mswin_pipe that seems to be working as expected:

When putting a smiley right before a closing parenthesis, do you:

Use two parentheses: (Like this: :) )
Use one parenthesis: (Like this: :)
Reverse direction of the smiley: (Like this: (: )
Use angle/square brackets instead of parentheses
Use C-style commenting to set the smiley off from the closing parenthesis
Make the smiley a dunce: (:>
I disapprove of emoticons
Other