⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 share_memory.c

📁 包括BASE64编码的C语言实现,DES加密的C实现,共享内存,信号量的C实现
💻 C
字号:
#include "share_memory.h"

/* create or get share memory */
void *shm_create(int key, unsigned long size, int *pshmid)
{
	int shmid;
	void *addr;
	/*
		int shmget(key_t key, int size, int flag);
	*/
	shmid = shmget(key, size, 0);
	if (shmid < 0) 
	{		
		shmid = shmget(key, size, IPC_CREAT | 0666);
		if (shmid < 0)
		{
			printf("sys alm: create share memory error!\n");	
			return 0;
		}
		else
			printf("sys not: create share memory success!\n");
		
		/*
			void *shmat(int shmid, void *addr, int flag);
		*/
		addr = (void *) shmat(shmid, NULL, 0);
		if (addr == (void *)-1)
			return 0;
			
		/* init share memory segmemnt */
		memset(addr, 0, size);
	} 
	else 
	{
		addr = (void *) shmat(shmid, NULL, 0);
		if (addr == (void *)-1)
		{
			printf("sys not: share memory get failed!\n");
			return 0;
		}		
	}
	printf("sys not: share memory get success!\nshmid: %d, addr:%x\n", shmid, addr);	
	*pshmid = shmid;
	return addr;
}

/* share memory disconnect */
int shm_close(void *shm)
{
	/*
		int shmdt(void *addr);
	*/
	
	return(shmdt(shm));
}

/* share memory delete */
int shm_delete(int shmid)
{
	/*
		int shmctl(int shmid, int cmd, struct shmid_ds *buf);
	*/
	return shmctl(shmid, IPC_RMID, 0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -