我有一个这样的句柄:

HANDLE hPipe = CreateNamedPipe(...)

是否可以将 hPipe 转换为文件描述符 (int)?

我需要这个,因为我已经在 C++ 中实现了使用 OpenSSL 与 TLS 一起工作的代码。这就像 TCP 套接字的魅力一样,但我真的需要在 Namedpipe 上使用它。

OpenSSL 的函数 SSL_set_fd(SSL *ssl, int fd) 只接受一个整数的 FileDescriptor,而不接受一个 HANDLE。

注意: 我也试过使用下面的函数,但没有用(返回 3):
int fd = _open_osfhandle(reinterpret_cast<intptr_t>(hPipe), 0);

最佳答案

您返回的 3 不是错误,而是文件描述符句柄。如果您查看 the documentation,您会看到它返回 -1 失败,否则返回值是文件描述符。

关于c++ - 将句柄转换为文件描述符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21445516/

10-15 13:44