在进程A创建它,然后进程B通过shm获取它时,如何使用SS_CTX对象?

时间:2018-11-27 13:32:30

标签: openssl

  1. 进程A

    int main(){ SSL_CTX * ctx = nullptr;

    ctx = CreateSSL();

    key_t key = ftok(PATH,PRO_ID); 如果(键<0) {     cout <<“ ftok错误!” << endl;     返回; }

    int shmid = shmget(key,SHM_SIZE,IPC_CREAT | 0666); 如果(shmid <0) {     cout <<“ shm错误!” << endl;     返回; }

    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);

    返回0; }

  2. 过程B

    int main() { SSL_CTX * ctx = nullptr;

    key_t key = ftok(PATH,PRO_ID); 如果(键<0) {     cout <<“ ftok错误!” << endl;     返回; }

    int shmid = shmget(key,0,0); 如果(shmid <0) {     cout <<“ shm错误!” << endl;     返回; }

    void * buff = shmat(shmid,0,0); memcpy(ctx,buff,sizeof(SSL _CTX));

    SSL * ssl = SSL_new(ctx);

    / *     做某事 * /

    返回0; }

看这段代码。 我在进程A中创建了一个SSL_CTX * ctx,进程B通过shm得到了它,memcpy函数无法将ctx复制到buff中。 系统信号为SIGSEGV,具有: memcpy(ctx,buff,sizeof(SSL _CTX));

我该怎么办? 可以将buff复制到ctx。

0 个答案:

没有答案