# Process::Status or exit code from popen3 win32?

**URL:** <https://www.ruby-forum.com/t/process-status-or-exit-code-from-popen3-win32/61273>\
**Category:** Ruby\
**Created:** [May 22, 2006, 5:12pm UTC](https://www.ruby-forum.com/t/process-status-or-exit-code-from-popen3-win32/61273 "2006-05-22T17:12:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![John-Mason\_PSShack](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/94ad74/32.png) [@John-Mason\_PSShack](https://www.ruby-forum.com/u/John-Mason_PSShack)\
**Post date:** [May 22, 2006, 5:12pm UTC](https://www.ruby-forum.com/t/process-status-or-exit-code-from-popen3-win32/61273/1 "2006-05-22T17:12:35Z")

</div>

Greetings all,

The win32 version of popen3 does not appear to set $? and  
Process.waitpid2(pid) always seems to fail with “no child process”.  
Other than Ara’s clever hack at  
[http://groups.google.com/group/comp.lang.ruby/msg/c0e7fc74641b9a50](http://groups.google.com/group/comp.lang.ruby/msg/c0e7fc74641b9a50) ,  
can anyone recommend how I can grab stdout, stderr, and the  
Process::Status (or at least the return code) for a child process on  
windows? My objective is to build a basic cross-platform popen4-like  
method (though I do not strictly need stdin) and the lack of  
Process::Status / exit code appears to be the only thing preventing me  
from using win32 popen3 for that purpose.

## Many thanks,

John-Mason Shackelford

Software Developer  
Pearson Educational Measurement

2510 North Dodge St.  
Iowa City, IA 52245  
ph. 319-354-9200x6214  
removed\_email\_address@domain.invalid  
[http://pearsonedmeasurement.com](http://pearsonedmeasurement.com)

---

<div class="post-metadata">

**Author:** ![John-Mason\_PSShack](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/94ad74/32.png) [@John-Mason\_PSShack](https://www.ruby-forum.com/u/John-Mason_PSShack)\
**Post date:** [May 29, 2006, 11:51pm UTC](https://www.ruby-forum.com/t/process-status-or-exit-code-from-popen3-win32/61273/2 "2006-05-29T23:51:06Z")

</div>

Many thanks to Samuel Tesla for his helpful patch which provides  
Process::Status when popen4 is called with a block, just as the unix  
Open4 library does. This moves us closer to cross platform  
compatiblity in capturing stdout, stderr and Process::Status for child  
processes.

See  
[http://rubyforge.org/tracker/?func=detail&atid=413&aid=4603&group\_id=85](http://rubyforge.org/tracker/?func=detail&atid=413&aid=4603&group_id=85)

–  
John-Mason Shackelford

Software Developer  
Pearson Educational Measurement

2510 North Dodge St.  
Iowa City, IA 52245  
ph. 319-354-9200x6214  
removed\_email\_address@domain.invalid  
[http://pearsonedmeasurement.com](http://pearsonedmeasurement.com)
