caller
內容在中斷內呼叫的規則是什麼?當我運行下面的代碼:中斷呼叫者
File: test
1| def a; b end
2| def b; c end
3| def c; loop{sleep(1)} end
4| def d; e end
5| def e; f end
6| def f; puts caller; exit end
7| Signal.trap("INT"){d}
8| a
執行期間
,並鍵入Ctrl+c
,我得到下面的輸出:
test:5:in `e'
test:4:in `d'
test:7:in `block in <main>'
test:3:in `call'
test:3:in `sleep'
test:3:in `block in c'
test:3:in `loop'
test:3:in `c'
test:2:in `b'
test:1:in `a'
test:8:in `<main>'
什麼是構成此調用堆棧中的規則?我看到兩個<main>
的實例。它們以某種方式結合在一起。我不確定如何。另外,當有多個線程運行時會發生什麼?如何確定從中斷調用的調用堆棧中組合或忽略哪些線程?