1
當我在BIO_reset函數後調用close(socket_fd)時,程序崩潰。崩潰日誌顯示傳遞給close()函數的無效句柄。BIO_reset在內部調用close(socket_fd)嗎?或者我們有明確關閉套接字文件描述符
void close_ssl_stream(BIO *bio, int socket)
{
BIO_flush(bio);
BIO_reset(bio);
BIO_free_all(bio);
ERR_clear_error();
ERR_free_strings();
ERR_remove_state(0);
printf("Closing socket fd: %d\n", socket);
close(socket);
}
程序在關閉(插座)線處崩潰。
我已經將BIO_reset函數上方的(套接字)行關閉。
{
BIO_flush(bio);
printf("Closing socket fd: %d\n", socket);
close(socket);
BIO_reset(bio);
BIO_free_all(bio);
ERR_clear_error();
ERR_free_strings();
ERR_remove_state(0);
}
現在它在BIO_reset(bio)行崩潰。 如何釋放此程序中的套接字文件描述符?任何改進此代碼的建議也受到歡迎。
你後者片段看起來很像第一,有沒有錯誤呢?而且,(系統調用)'close()'不應該崩潰,不管你傳遞了什麼,它可能會返回'EBADFD'。 – ilkkachu
@ilkkachu。是啊。我現在糾正了它。 – smartkid