利用共享存储实现父子进程间的通信

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/ipc.h> #include <sys/shm.h> #define SHMSIZE 4096*2 int main(int argc, char *argv[]) { int shmid=shmget(IPC_PRIVATE, SHMSIZE, IPC_CREAT|0666); if( -1==shmid ) { perror("shmget"); exit(1); } char* p_map=(char*)shmat(shmid, NULL, 0); if( (char*)-1==p_map ) { perror("shmat"); exit(1); } pid_t pid=fork(); if( pid<0 ) { perror("fork"); exit(1); } else if( 0==pid )//子进程负责读 { char buf[20]; memset(buf, 0, 20); sleep(1); strncpy(buf, p_map, 20); printf("%s/n", buf); exit(0); } else //父进程负责写 { strncpy(p_map, "Hello World!", sizeof("Hello World!")); wait(NULL); if( -1==shmdt(p_map) ) { perror("shmdt"); exit(1); } if( -1==shmctl(shmid, IPC_RMID, NULL) ) { perror("shmctl"); exit(1); } exit(0); } }  

你可能感兴趣的:(null,存储,include)