实现linux进程间通信之共享内存,共享内存 Shared Memory - Linux进程间通信

#include

#include

#include

#include

#include

#include

#include

#define SEGSIZE 100

void writeshm(int shmid, char *segptr, char *text)

{

strcpy(segptr, text);

printf("Write Done...\n");

}

void readshm(int shmid, char *segptr)

{

printf("Read from segptr: %s\n", segptr);

}

void removeshm(int shmid)

{

shmctl(shmid, IPC_RMID, 0);

printf("Shared memory segment marked for deletion\n");

}

int main(int argc, char *argv[])

{

key_t key;

int shmid;

char *segptr;

/* Create unique key via call to ftok() */

key = ftok(".", 'S');

/* Open the shared memory segment - create if necessary */

if((shmid = shmget(key, SEGSIZE, IPC_CREAT|IPC_EXCL|0666)) == -1)

{

printf("Shared memory segment exists - opening as client\n");

/* Segment probably already exists - try as a client */

if((shmid = shmget(key, SEGSIZE, 0)) == -1)

{

perror("shmget");

exit(1);

}

}

else

{

printf("Creating new shared memory segment\n");

}

/* Attach (map) the shared memory segment into the current process */

if((segptr = (char *)shmat(shmid, 0, 0)) == (char *)-1)

{

perror("shmat");

exit(1);

}

//char mywords[] = "hello!";

//writeshm(shmid, segptr, mywords);

readshm(shmid, segptr);

removeshm(shmid);

return 0;

}

原文资料:

http://www.tldp.org/LDP/lpg/node65.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值