首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSL_free是否也关闭对象的文件描述符?C++ OpenSSL

SSL_free是否也关闭对象的文件描述符?C++ OpenSSL
EN

Stack Overflow用户
提问于 2022-09-25 07:17:48
回答 1查看 54关注 0票数 1

SSL_free是否也关闭对象的文件描述符?C++ OpenSSL

我在https://www.openssl.org/docs/man1.1.1/man3/SSL_free.html上找不到这个信息。

如果openssl没有关闭文件描述符:您应该像示例1或例2那样关闭文件描述符吗?甚至是例子3(不太可能)?

示例1:

代码语言:javascript
复制
SSL* ssl = ...;
int fd = SSL_get_fd(ssl);
SSL_free(ssl);
close(fd);

示例2:

代码语言:javascript
复制
SSL* ssl = ...;
int rfd = SSL_get_rfd(ssl);
int wfd = SSL_get_wfd(ssl);
SSL_free(ssl);
close(rfd);
close(wfd);

例3:

代码语言:javascript
复制
SSL* ssl = ...;
int fd = SSL_get_fd(ssl);
int rfd = SSL_get_rfd(ssl);
int wfd = SSL_get_wfd(ssl);
SSL_free(ssl);
close(fd);
close(rfd);
close(wfd);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-25 07:53:57

您不应该closeSSL_get_fd() (或SSL_get_rfd()/SSL_get_wfd() )获得的文件描述符

SSL_free()还为间接受影响的项调用了免费()ing过程,如果适用的话:缓冲BIO、读和写BIOs、为这个ssl专门创建的密码列表SSL_SESSION。在调用SSL_free()之前或之后没有显式地释放这些,因为尝试释放两次可能会导致程序失败。

至于第三个例子:如果SSL_get_rfd()SSL_get_wfd()返回不同的文件描述符,SSL_get_fd()返回与SSL_get_rfd()相同的描述符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73842687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档