2017-04-17 104 views

回答

1

兩個符號存在於共享庫的零初始化段:

% nm /usr/lib/x86_64-linux-gnu/libpython2.7_d.so|egrep '(interp_head|_PyThreadState_Current)' 
000000000062a230 b interp_head 
000000000062a208 B _PyThreadState_Current 

interp_head是一個靜態變量 - 沒有外部鏈接的變量 - 和外面是不可見該模塊。 _PyThreadState_Current有外部鏈接,以及使用所述共享庫是將程序可見:

% objdump -TC /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0 | \ 
    egrep 'interp_head|_PyThreadState_Current' 
000000000056d3c0 g DO .bss 0000000000000008 Base  _PyThreadState_Current 

(僅_PyThreadState_Current在外部符號表中列出)。


每個進程都有一組單獨的全局變量;這些不是在Python進程中共享的。