我可以将文件套接字描述符作为函数参数传递吗,即
void mysend(int fd, uint8_t *data, size_t len)
{
...
sendto(fd, ...);
...
}
int main()
{
int fd = socket(...);
uint8_t data[5] = {1, 2, 3, 4, 5};
mysend(fd, data, 5);
return 0;
}
我已经可以做到这一点。我想知道以这种方式编写代码是否会隐藏一些问题
答案 0 :(得分:1)
您绝对可以做到。例如,libc做到了:
ssize_t write(int fd, const void *buf, size_t count);
ssize_t read(int fd, void *buf, size_t count);
ssize_t sendto(int sockfd, const void *buf, size_t len, ...);
这些函数可以将套接字描述符作为第一个参数。
关于代码的说明:在return
之前,请不要忘记close(fd)
。
建议您彻底区分创建,使用和关闭文件描述符的功能。