android共享內存


在android下不能通過shm_open使用共享內存。

網上有好多關於android下使用Ashmem實現共享內存的,但經過嘗試該方法可以mmap出內存,但是和另一個進程沒有實現共享。

具體的使用方法:

1)fd = open("/dev/ashmem", O_RDWR);

2)ioctl(fd, ASHMEM_SET_NAME, region_name);
3)
ioctl(fd, ASHMEM_SET_SIZE, region_size); 

4)ptr=mmap(NULL, len , PROT_READ|PROT_WRITE, MAP_SHARED , fd , 0);

上面方法沒有實現兩個進程間的內存共享。

使用以下方式實現了進程間的數據共享。

1>直接使用open("filename", O_RDWR|O_CREAT); 通過文件實現數據共享。

2>ParcelFileDescriptor和Ashmem結合使用。fd = open("/dev/ashmem", O_RDWR)創建出來的fd轉化成ParcelFileDescriptor通過aidl傳到另一進程。另個進程可以直接使用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM