1.sys/shm.h 共享存储
2.sys/ipc.h IPC(命名管道)
#include <stdio.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <unistd.h>
#define SIZE 1024
#define KEY 99
int shmid;
int j=5;
int main()
{
int i,*pint;
pid_t pid;
char *addr;
shmid=shmget(SIZE,KEY,IPC_CREATE|0777);
pint=shmat(shmid,0,0);
*pint=100;
printf("testing\n");
pid=fork();
i++;
j++;
*pint+=1;
printf("return of fork success :pid=%d\n",pid);
printf("i=%d;j=%d\n",i,j);
printf("*pint=%d\n",*pint);
return 0;
}
testing
return fork id ,pid=0
i=11,j=6
*pint=101
return fork id ,pid=6040
i=11,j=6
*pint=102
这个结果说明:
1.局部变量和全局变量并未受到进程的影响,因为他们在各自的进程空间里,互不干涉。
2.pint指向的内存为两个进程的共享内存,父子进程共同影响共享内存中的值。