2016-08-02 11 views
0
1.py 

import ctypes 

filename="sample1.txt" 
filename2="sample2.txt" 
fo=open(filename,'r+') 
str1= fo.read(20) 
fo.close() 
value_address=id(str1) 
ob_rec=ctypes.c_long.from_address(value_address) 
print ob_rec 
fo1=open(filename2,"wb") 
td=str(value_address) 
fo1.write(td) 
fo1.close() 

2.py 
import ctypes 

filename2="sample2.txt" 
fo=open(filename2,'r+') 
str1= fo.read(20) 
fo.close() 
value_address=int(str1) 
ob_rec=ctypes.c_long.from_address(value_address) 
print ob_rec 

sample1.txt 
666 

這裏我在1.py文件中獲取sample1.txt中的值並將其保存在sample2.txt中。但是當我嘗試從2.py訪問該地址時,出現分段錯誤。雖然我能夠成功訪問1.py。 在此先感謝我們可以將變量的id()保存在文件(filename2.txt)中,並從另一個文件(2.py)訪問該id()並使用ctypes訪問地址中的數據。

+0

爲什麼要打開兩次'filename'? – Psytho

+0

@亞歷克斯對不起。我編輯它。我希望現在它是正確的。 –

回答

1

不,如果您有兩個Python進程,CPython使用的id()的虛擬地址在另一個進程中無效。