發表文章

目前顯示的是 二月 26, 2014的文章

IPC(socket)

from:http://jimmychenhaha.blogspot.tw/2012/12/ipcsocket.html

網路找到的範例: 很不錯
http://www.cs.cf.ac.uk/Dave/C/node28.html

source code:
https://docs.google.com/folder/d/0B8hm-I2M8BD7TkVJcGtHQUM3MTg/edit

server.c 


#include
#include
#include
#include

#define NSTRS       3           /* no. of strings  */
#define ADDRESS     "mysocket"  /* addr to connect */

/*
 * Strings we send to the client.
 */
char *strs[NSTRS] = {
    "This is the first string from the server.\n",
    "This is the second string from the server.\n",
    "This is the third string from the server.\n"
};

main()
{

IPC (share memory)

From:http://jimmychenhaha.blogspot.tw/2012/10/ipcshare-memory.html [Function]

#include
int shmget(key_t key, size_t size, int shmflg);

key:
      IPC_PRIVATE:產生一個新的共享記憶體分段

size:
      需要共享記憶體的大小 , 因為分配大小皆以page為單位 , 所以如果size = 1~4096 , 則實際上會分配到4k.

shmflag:
      S_IRUSR: 讀記憶體分段
      S_IWUSR: 寫記憶體分段
      IPC_CREAT :確保開啟的記憶體是新的,而不是現存的記憶體.
      | 0666 : 作為校驗 ,  ubuntu要加

<shmat>
#include
void *shmat(int shmid, const void *shmaddr, int shmflg);

shmid:
          共享記憶體的id

shmaddr:
     NULL:讓系統自己選擇.

shmflg:
SHM_RDONLY:唯讀模式
          0:可讀可寫

<shmdt>
#include int shmdt(const void *shmaddr); <shmctl>  #include #include  int shmctl(int shmid, int cmd, struct shmid_ds *buf); shmid:            share memory id cmd:           IPC_STAT: 從共享記憶體裡,拿 shmid_ds 結構資料給 buf.           IPC_SET: 從buf 複製到共享記憶體           IPC_RMID: 砍了共享記憶體 buf:         就暫存區.
[CODE] 


#include
#include
#include
#include
#include
#define shm_size     32
#define PARM IPC_CREAT | 0666
int main(void)
{
    char c;
    int shm_id;
    char *shm_add…