資源描述:
《利用共享內存實現進程間通信--簡單剪貼板實例.pdf》由會員上傳分享,免費在線閱讀,更多相關內容在行業(yè)資料-天天文庫。
1、利用共享內存實現進程間通信在兩個進程間共享數據的方法,至今為止我們只說過利用管道。管道只是利用了輸入輸出重定向的原理,非常簡單。而且只能在父子進程間使用。很多場合下這種方法是無法滿足我們的要求的。那么現在,我們又有了一種新的方法——利用共享內存(sharedmemory)。這可以使我們在任意兩個進程間傳遞數據,而且也是相對簡單容易實現的一個方法。注意:在正常情況下,一個進程的所使用的內存區(qū)是不允許其它進程訪問的。這里我們要開辟的共享內存是例外。我們來做一個簡單的剪貼板。從標準輸入向mcut輸入數據,mcut將其放在共享內存中,然后mpaste從共
2、享內存中讀出數據并顯示。#include#include#include#includeintmain(){key_tshmkey;intshmid,in_tmp;char*head,*pos,in_data[4096],*in_ptr;shmkey=ftok("mcut",'a');//計算標識符//shmid開辟共享內存shmid=shmget(shmkey,sizeof(in_data),IPC_CREAT
3、0666);head=pos=shmat(sh
4、mid,0,0);//允許本進程使用這塊共享內存in_ptr=in_data;//開始從標準輸入輸入數據,暫時存在in_data里。while((in_tmp=getchar())!=EOF){*in_ptr=in_tmp;in_ptr++;}*in_ptr='