Это тебе UNIX IPC читать нужно.
способов взаимодействия куча. (Пайпы, сигналы, shared memory, очереди сообщений и т.д. и т.п.)
Поройся в нете....
По этому вопросу есть целая гора инфы.
[root@murr tmp]# cat mm.c
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
typedef int mytype_t;
int main () {
int fd;
mytype_t *t;
int i;
fd = open ("/dev/zero", O_RDWR);
if (fd == -1) {
printf ("good-bye!\n");
return -1;
}
t = mmap (NULL, sizeof(mytype_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
*t = 0;
if (fork ()) {
int status;
*t += 1;
printf ("t is %d on exit in parent\n", *t);
wait(&status);
}
else {
*t += 1;
printf ("t is %d on exit in child\n", *t);
}
return 0;
}
[root@murr tmp]# make mm
cc mm.c -o mm
[root@murr tmp]# ./mm
t is 1 on exit in parent
t is 2 on exit in child
[root@murr tmp]#
Даже немного перемудрил:
[root@murr tmp]# cat mm.c
#include <stdio.h>
#include <fcntl.h>
#include <sys/mman.h>
typedef int mytype_t;
int main () {
mytype_t *t;
int i;
t = mmap (NULL, sizeof(mytype_t), PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, 0, 0);
*t = 0;
if (fork ()) {
int status;
*t += 1;
printf ("t is %d on exit in parent\n", *t);
wait(&status);
}
else {
*t += 1;
printf ("t is %d on exit in child\n", *t);
}
return 0;
}