c.txt

来自「在linux下可以实现内存的共享。 在linux下可以实现内存的共享。」· 文本 代码 · 共 107 行

TXT
107
字号
建立共享内存 
共享内存大小:64个char 
通过给程序带参数对共享内存进行操作(就是带参数的main函数) 
例如: 程序名 oo 
oo c 建立共享内存 
oo r 显示共享内存内容 
oo w 字符串 将制定字符串写入共享内存 
oo d 删除共享内存 
谁知道谢谢了,回答的好的话提高悬赏.
问题补充:#include <sys/types.h> 
#include <stdio.h> 
#include <sys/ipc.h> 
#include <sys/shm.h> 

int main (int argc,char *argv[]) 
{ 
int shm_id; 
key_t key; 
int size; 
char *shm_addr,*head,*ptr,data[64],*str; 

size=sizeof (char) * 64; 
switch (*argv[1]) 
{ 
case 'c': 
key = ftok("/work/oo",0); 
shm_id = shmget (key,size,IPC_CREAT|0660); 
if (shm_id==-1) 
{ 
return (-1); 
} 
else 
printf ("the shm_id is %d\n",shm_id); 
break; 
case 'r': 


printf ("%s\n",data); 

break; 
case 'w': 

shm_addr = shmat (shm_id,0,0); 
shm_addr = data; 
while(*argv[2]!='\0') 
{ 
*shm_addr = *argv[2]; 
shm_addr++; 
argv[2]++; 
} 

printf("%s\n",data); 
break; 
case 'd': 
shmctl(shm_id,IPC_RMID,0); 
break; 
default : printf("error\n"); 
} 
} 














#include <stdio.h> 
#include <malloc.h> 
#include <string.h> 

char *memory, *b; 

void ShareMemory( char func, char *data ) 
{ 
switch( func ) 
{ 
case 'c': 
memory = ( char * )malloc( sizeof( char ) * 64 ); 
break; 
case 'r': 
printf( "%s", memory ); 
break; 
case 'w': 
strcpy( memory, data ); 
break; 
case 'd': 
free( memory ); 
break; 
default: 
printf("wrong input!"); 
} 
} 

void main(int argc,char **argv) 
{ 
ShareMemory( *argv[1], argv[2] ); 
ShareMemory( *argv[3], argv[4] ); 
ShareMemory( *argv[5], argv[6] ); 
} 

⌨️ 快捷键说明

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