不同进程间用共享内存通信的问题,求解
我先说下问题,用两块共享内存可以实现不同的两个进程的通信,下面是我的代码,求大神看看,怎么只有单方面的接收与发送!!!!
#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/types.h>#include<string.h>int main(){ key_t key,key1; pid_t pid; int shm_id,shm_id1; key = ftok( ".", 0x12); key1 = ftok( ".", 0x50); //printf("%d %d\n",key,key1); if(key<0) { perror("the key:"); } shm_id = shmget( key, 1024, IPC_CREAT); shm_id1 = shmget( key1, 1024, IPC_CREAT); if(shm_id<0) { perror("the share memory:"); } if(pid<0) { perror("the son of process:"); } if(pid==0) { char *ptr; ptr = shmat( shm_id1 ,NULL ,0); //是不是这里的NULL 的问题,如果指定 怎么指定 while(1) { fputs(ptr,stdout); sleep(1); //bzero(ptr,1024); } } if(pid>0) { char *str; str = shmat( shm_id, NULL, 0); while(1) { char buf[1024]; bzero(buf,sizeof(buf)); fgets(buf,sizeof(buf),stdin); strcpy(str,buf); } } return 0;}#include<stdio.h>#include<sys/ipc.h>#include<sys/shm.h>#include<sys/types.h>#include<string.h>int main(){ key_t key,key1; pid_t pid; int shm_id,shm_id1; key = ftok( ".", 0x12); key1 = ftok( ".", 0x50); //printf("%d %d\n",key,key1); if(key<0) { perror("the key:"); } shm_id = shmget( key, 1024, IPC_CREAT); shm_id1 = shmget( key1, 1024, IPC_CREAT); if(shm_id<0) { perror("the share memory:"); } if(pid<0) { perror("the son of process:"); } if(pid==0) { char *ptr; ptr = shmat( shm_id1 ,NULL ,0); while(1) { char buf1[1024]; bzero(buf1,sizeof(buf1)); fgets(buf1,sizeof(buf1),stdin); strcpy(ptr,buf1); //write to shm_id1 } } if(pid>0) { char *str; str = shmat( shm_id, NULL, 0); while(1) { fputs(str,stdout); //read from shm_id //bzero(str,1024); sleep(1); } } return 0;}