Bug #251
$? is not thread scope
| Status: | Closed | Start date: | ||
|---|---|---|---|---|
| Priority: | Low | Due date: | ||
| Assignee: | - | % Done: | 100% |
|
| Category: | - | |||
| Target version: | - | |||
| ruby -v: |
Description
1.9 では $? がスレッドスコープでなくなっているようです。
以下のように、他のスレッドで動かしたコマンドの結果が $? に表
れます。
% ./ruby -ve '
t = Thread.new { system("false") }
p $?
t.join
p $?
'
ruby 1.9.0 (2008-07-09 revision 17977) [i686-linux]
false
#<Process::Status: pid 11679 exit 1>
1.8 では $? は変化しません。
% ruby-1.8 -ve '
t = Thread.new { system("false") }
p $?
t.join
p $?
'
ruby 1.8.7 (2008-07-10 revision 17572) [i686-linux]
nil
nil
あと、ついでにいうと、1.9 では $? の初期値が 1.8 と異なり
false です。
--
Tanaka Akira
Associated revisions
add a test for [ruby-dev:35414].
* vm_core.h (rb_thread_t), vm.c (rb_thread_mark), process.c
(rb_last_status_get, rb_last_status_set, rb_last_status_clear):
moved last_status from rb_vm_t. [ruby-dev:35414]
* vm.c (th_init2): initialize last_status with nil.
History
Updated by Anonymous almost 4 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
Applied in changeset r17981.