shmget
andを使用して、他の 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[]
をコピーするのではなく、簡単に共有できるのが好きでした.これを処理するためのより良い方法はありますか?