процесс A
int main () {SSL_CTX * ctx = nullptr;
ctx = CreateSSL ();
key_t key = ftok(PATH, PRO_ID);if (key <0) {cout << "ftok error!"<< endl;вернуть;} </p>
int shmid = shmget (ключ, SHM_SIZE, IPC_CREAT | 0666);if (shmid <0) {cout << "ошибка shm!"<< endl;вернуть;} </p>
void * buff = shmat (shmid, 0, 0);memset (buff, 0, sizeof (SSL_CTX));memcpy (buff, ctx, sizeof (SSL_CTX));
sleep (60);
shmdt (buff);shmctl (shmid, IPC_RMD, NULL);
return 0;}
Процесс B
int main () {SSL_CTX * ctx = nullptr;
key_t key = ftok (PATH, PRO_ID);if (key <0) {cout << "ftok error!"<< endl;вернуть;} </p>
int shmid = shmget (ключ, 0, 0);if (shmid <0) {cout << "ошибка shm!"<< endl;вернуть;} </p>
void * buff = shmat (shmid, 0, 0);memcpy (ctx, buff, sizeof (SSL _CTX));
SSL * ssl = SSL_new (ctx);
/ * что-то сделать * /
return 0;}
посмотрите этот код.Я создаю SSL_CTX * ctx в процессе A, процесс B получает его по shm, функция memcpy не может скопировать ctx в buff.системный сингл SIGSEGV с: memcpy (ctx, buff, sizeof (SSL _CTX));
что мне делать?можно скопировать бафф в ctx.