Bug #251

$? is not thread scope

Added by Anonymous almost 4 years ago. Updated about 1 year ago.

[ruby-dev:35414]
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

Revision 17981
Added by akr (Akira Tanaka) almost 4 years ago

add a test for [ruby-dev:35414].

Revision 17985
Added by nobu (Nobuyoshi Nakada) almost 4 years ago

* 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.

Also available in: Atom PDF