1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Linux下的共享内存 ---创建共享内存

Linux下的共享内存 ---创建共享内存

时间:2022-03-24 15:49:13

相关推荐

Linux下的共享内存 ---创建共享内存

说明:

1、创建共享内存使用的函数:int shmget(key_t key, size_t size, int shm-flg);

2、参数key既可以是IPC_PRIVATE(0),也可是是ftok函数返回的一个关键字。

3、参数size指定段的大小。

4、参数flags 八进制数,0xxx。转化为二进制后分别代表rw-rw-rw-

IPC_CREAT:当shmflg&IPC_CREAT为真时,如果内核中不存在键值与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存,返回此共享内存的标识符;IPC_CREAT|IPC_EXCL:如果内核中不存在键值

与key相等的共享内存,则新建一个共享内存;如果存在这样的共享内存则报错

5、shmget成功返回shmid,失败返回-1。

6、在命令行执行ipcs –m 显示,已经成功的创建了一块共享内存区。

7、nattch字段显示已经附加到这个内存区的进程数。

步骤:

1、创建源文件main.c:

#include <stdio.h>#include <sys/ipc.h>#include <sys/shm.h>int main(int argc, char *args[]){// 建立一块共享内存区域int shid = shmget(IPC_PRIVATE, 1024, IPC_CREAT | 0666);// 输出共享内存的id号printf("shid = %d\n", shid);return 0;}

2、创建makefile文件:

.SUFFIXES:.c .oCC=gccSRCS=main.cOBJS=$(SRCS:.c=.o)EXEC=mainstart: $(OBJS)$(CC) -o $(EXEC) $(OBJS)@echo "--------------------------OK------------------------".c.o:$(CC) -Wall -o $@ -c $<clean:rm -rf $(OBJS) $(EXEC)

3、编译并执行程序,并查看共享内存:

[negivup@negivup mycode]$ makegcc -Wall -o main.o -c main.cgcc -o main main.o--------------------------OK------------------------[negivup@negivup mycode]$ mainshid = 229381[negivup@negivup mycode]$ ipcs -m------ Shared Memory Segments --------key shmidownerpermsbytesnattchstatus0x00000000 229381negivup 666 1024 0

可以看出,共享内存创建成功,共享内存的ID是229381

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。