发布网友
共2个回答
热心网友
简单的实现,没有添加同步机制,回头再添加上去,而且,我是在不同终端里面写的,你可以把两段代码,一个放到父进程,一个放到子进程...就可以了你说的这些API,自己man 一次,看看说明就知道用法了.... 楼上说的对齐的问题,我没有太注意..不过,不管你要共享什么,一个sizeof看看大小,一个memcpy拷贝,你就作为数据直接拷贝到共享内存区域就OK了...另外一边再拷贝回来,用一个结构体类型的指针指向你拷贝回来的数据,不就给这部分内存再规划成一个结构体了。。至于具体的, KEY 的含义,你需要了解linux的ipc机制。 #include #include #include #include #define BUF_SIZE 100 #define KEY 99 int main(void) { int shmid; char *shmptr; shmid=shmget(99,BUF_SIZE,IPC_CREAT|0666); if(shmid==-1) { printf("Shared Memory Created error...\n");exit(0); } shmptr=shmat(shmid,NULL,0); if(shmptr==(void*)-1) { printf("shmat error,shmptr= %d \n",shmptr); exit(1); } while(1) { printf("type strings into Shared Memory:"); fgets(shmptr,BUF_SIZE,stdin); } return 0; } 下面这段就每隔10秒钟扫描共享内存区域的内容: #include #include #include #include #define BUF_SIZE 100 #define KEY 99 int main(void) { int shmid; char *shmptr; shmid=shmget(99,BUF_SIZE,IPC_CREAT|0666); if(shmid==-1) { printf("Shared Memory Created error...\n");exit(0); } shmptr=shmat(shmid,NULL,0); if(shmptr==(void*)-1) { printf("shmat error,shmptr= %d \n",shmptr); exit(1); } while(1) { printf("Infomation in Shared Memory:"); printf("%s \n",shmptr); sleep(10); } return 0; }
热心网友
按照我的理解
不管是linux还是window系统还是其他系统;
每个进程都是的函数,因此每个进程都会需要一个int32 main(int argc char *argv)作为入口函数;
就像在window下一样,每个.exe可执行文件都会有一个main函数一样,进程间没有耦合,数据也不共享;