LINUX.ORG.RU

а какой язык?

anonymous
()

А ты как думаешь? С конечно.

tugrik ★★
() автор топика

Это тебе UNIX IPC читать нужно. способов взаимодействия куча. (Пайпы, сигналы, shared memory, очереди сообщений и т.д. и т.п.) Поройся в нете.... По этому вопросу есть целая гора инфы.

Dead ★★★★
()

[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]#

Murr ★★
()

Это упрощенный вариант только для Linux, ессно.

Murr ★★
()

Большое сспасибо.

tugrik ★★
() автор топика

Даже немного перемудрил:
[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;
}

Murr ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.