как использовать объект SS_CTX, когда процесс A создает его, а процесс B получает его по shm? - PullRequest
0 голосов
/ 27 ноября 2018
  1. процесс 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;}

  2. Процесс 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...