# \[Bug:1.9\] PTY.check is broken

**URL:** <https://www.ruby-forum.com/t/bug-1-9-pty-check-is-broken/182212>\
**Category:** Development\
**Created:** [January 25, 2010, 9:08am UTC](https://www.ruby-forum.com/t/bug-1-9-pty-check-is-broken/182212 "2010-01-25T09:08:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [January 25, 2010, 9:08am UTC](https://www.ruby-forum.com/t/bug-1-9-pty-check-is-broken/182212/1 "2010-01-25T09:08:24Z")

</div>

e$B$J$+$@$G$9!#e(B

PTY.checke$B$,$$$m$$$m$H2u$l$F$$$k$h$&$J5$$,$7$^$9!#e(B

- r20298e$B$K$h$k$He(B PTY.check(pid) to poll program termination.  
e$B$He(B  
e$B$$$&$3$H$J$N$K=\*N;$^$GBT$AB3$1$ke(B
- e$B%a%=%C%IK\BN$J$N$Ke(Bint statuse$B$rJV$7$F$$$ke(B
- pid\_te$B$r4|BT$9$ke(Braise\_from\_check()e$B$Ke(BVALUEe$B$rEO$7$F$$$ke(B

# Index: ext/pty/pty.c

— ext/pty/pty.c (revision 26395)  
+++ ext/pty/pty.c (working copy)  
@@ -606,9 +606,9 @@ pty\_check(int argc, VALUE \*argv, VALUE s

```
 rb_scan_args(argc, argv, "11", &pid, &exc);

```

- cpid = rb\_waitpid(NUM2PIDT(pid), &status, WUNTRACED);

- cpid = rb\_waitpid(NUM2PIDT(pid), &status, WNOHANG|WUNTRACED);  
if (cpid == -1) return Qnil;

- if (!RTEST(exc)) return status;
- raise\_from\_check(pid, status);

- if (!RTEST(exc)) return rb\_last\_status\_get();
- raise\_from\_check(cpid, status);  
return Qnil; /\* not reached \*/  
}

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [January 25, 2010, 9:42am UTC](https://www.ruby-forum.com/t/bug-1-9-pty-check-is-broken/182212/2 "2010-01-25T09:42:56Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:40141] [Bug:1.9] PTY.check is broken”  
on Mon, 25 Jan 2010 17:07:53 +0900, Nobuyoshi N.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|\* r20298e$B$K$h$k$He(B PTY.check(pid) to poll program termination. e$B$He(B  
| e$B$$$&$3$H$J$N$K=_N;$^$GBT$AB3$1$ke(B  
|_ e$B%a%=%C%IK\BN$J$N$Ke(Bint statuse$B$rJV$7$F$$$ke(B  
|\* pid\_te$B$r4|BT$9$ke(Braise\_from\_check()e$B$Ke(BVALUEe$B$rEO$7$F$$$ke(B

e$B%3%\_%C%H$7$F$/$@$5$$!#e(B

---

<div class="post-metadata">

**Author:** ![nobu](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e9c0ed/32.png) [@nobu](https://www.ruby-forum.com/u/nobu)\
**Post date:** [January 25, 2010, 9:47am UTC](https://www.ruby-forum.com/t/bug-1-9-pty-check-is-broken/182212/3 "2010-01-25T09:47:38Z")

</div>

e$B%A%1%C%He(B #2642 e$B$,99?7$5$l$^$7$?!#e(B (by Nobuyoshi N.)

e$B%9%F!\<%?%9e(B Opene$B$+$ie(BClosede$B$KJQ99e(B  
e$B?JD=e(B % 0e$B$+$ie(B100e$B$KJQ99e(B

This issue was solved with changeset r26402.  
Nobuyoshi, thank you for reporting this issue.  
Your contribution to Ruby is greatly appreciated.  
May Ruby be with you.

* * *

[http://redmine.ruby-lang.org/issues/show/2642](http://redmine.ruby-lang.org/issues/show/2642)
