3

shmgetandを使用して、他の forked+execed プロセスとメモリを共有しようとしていますshmat:

char test[]="test";
int shID;
char *shptr;
key_t shkey = 2404;

shID = shmget(shkey, sizeof(char)*(strlen(test)+1), IPC_CREAT | 0666);
if (shID >= 0) {
    shptr = shmat(shID, 0, 0);
    if (shptr==(char *)-1) {
        perror("shmat");
    } else {
        memcpy(shptr, &test, strlen(test)+1);
        ....
        //forking and execing
        ....
        shmdt(shptr);
    }
} else {
    perror("shmget");
}

これはうまくいきます。

問題は、それ test[]が巨大になるということchar*です。だから私はそれtext[]をコピーするのではなく、簡単に共有できるのが好きでした.これを処理するためのより良い方法はありますか?

4

1 に答える 1