程序間通訊之共享記憶體

2021-06-11 03:19:13 字數 1156 閱讀 4397

此程式實現兩個普通程序間通過共享記憶體來進行通訊,共享記憶體能夠進行大資料量的通訊,這一點事訊息佇列無法比擬的。在這裡同時使用了訊號量來保證兩個程序間的讀寫同步。

傳送端源**:

#include #include #include #include #include #include #include #include #include int main()

if(semctl(semid,0,setval,0)==-1)

exit(1);

} printf("sem init sucessful!\n");

key1=ftok(".",1254);

if((shmid=shmget(key1,2000,ipc_creat|shm_r|shm_w))==-1)

if((sharem=shmat(shmid,null,0))==null)

while(running)

if(!strncmp(buffer,"end",3))

}} sleep(10);

return 0;

}

接收端源**:

#include #include #include #include #include #include #include #include #include int main()

/* if(semctl(semid,0,setval,0)==-1)

exit(1);

}*/printf("sem init sucessful!\n");

key1=ftok(".",1254);

if((shmid=shmget(key1,2000,ipc_creat|shm_r|shm_w))==-1)

if((sharem=shmat(shmid,null,0))==null)

while(running)

if(0==strncmp(buffer,"end",3))

} //printf("");

} shmdt(sharem);

if(shmctl(shmid,ipc_rmid,0)==-1)

if(semctl(semid,ipc_rmid,0)==-1)

return 0;

}

程序間通訊之共享記憶體

1.概念 共享記憶體就是多個程序的位址空間對映到同乙個物理記憶體,多個程序都能看到這塊物理記憶體,共享記憶體可以提供給伺服器程序和客戶程序之間進行通訊,不需要進行資料的複製,所以速度最快。2.共享記憶體操作需要的函式 1 我們需要利用ftok函式生成key識別符號。key t ftok const ...

程序間通訊之共享記憶體

ipc物件這個概念需要理解,因為好多書或者料就直接說ipc就是共享記憶體 訊息佇列 訊號燈集,其實ipc是一種機制,這種機制提供了程序間通訊的通道,那麼為什麼加個system v呢,那是因為在system v 系統的四個版本中提出的程序通訊的ipc這種機制。所以叫做system v ipc。目前li...

程序間通訊之共享記憶體

繼學習過程序間通訊的兩種方式管道和訊息佇列之後,接下來就要學習乙個速度最快的 程序間通訊的方式 共享記憶體。為什麼說共享記憶體是最快的ipc形式呢?因為它省掉了兩次資料拷貝的過程。一旦這樣的記憶體對映到共享 他的程序的位址空間,這些程序間資料傳遞不在涉及到核心 就是程序不在通過執行進入核心的系統呼叫...