gpt4 book ai didi

c - getsockopt api设计问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:54:01 24 4
gpt4 key购买 nike

我们可以看到api定义为blow

   int getsockopt(int sockfd, int level, int optname,
void *optval, socklen_t *optlen);

问题一:

  1. 假设给定一个级别和optname,那么我们知道optlen,为什么还需要用户提供optlen参数?

  2. 即使用户提供了 optlen,为什么它是指向 socklen_t 而不是直接指向 socklen_t 的指针?执行是否会以某种方式改变 optlen 的值?

谢谢

最佳答案

您是否查看过 getsockopt(2) 的 Linux 手册页?或 getsockopt() 的 POSIX 规范?

  1. optlen 参数是一个输入输出参数。在输入时,它指定 optval 空间中有多少可用空间,在输出时,它报告在 optval 中写入了多少空间。

  2. 是的,实现改变了*optlen的值。

例如,POSIX 表示:

If the size of the option value is greater than option_len, the value stored in the object pointed to by the option_value argument shall be silently truncated. Otherwise, the object pointed to by the option_len argument shall be modified to indicate the actual length of the value.

规范在您使用 optlen 的地方使用 option_len,在您使用 optval 的地方使用 option_value

关于c - getsockopt api设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55055760/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com