如何在 C++ 中使用带有整数 fd 的读取系统调用
How to use read syscall with an integer fd in C++
我正在使用套接字。在使用 socket() 创建一个时,我们得到一个整数文件描述符。然后我想从这个 fd 中读取数据。
为此,我遵循了可运行的 C 代码 - 在以下行中使用 read() 系统调用:
read (sockfd /* int */, buff /* char* */, 50);
然而,编译出现错误“read was not declared in this scope; did you mean 'fread'?”。
在使用 g++ 将给定的功能 C 客户端代码简单地编译为 C++ 文件时,我得到了同样的错误。
此 C++ 程序中包含的内容是(按顺序):iostream、netdb.h、netinet/in.h、stdio.h、stdlib.h、string.h, sys/socket.h, sys/types.h
std 命名空间正在使用中。
我做错了什么?
你可能错过了#include <unistd.h>
但我也建议使用 recv
,它在 sys/socket.h
中声明
如果您遇到困难,请始终尝试联机帮助页:man read.2
我正在使用套接字。在使用 socket() 创建一个时,我们得到一个整数文件描述符。然后我想从这个 fd 中读取数据。
为此,我遵循了可运行的 C 代码 - 在以下行中使用 read() 系统调用:
read (sockfd /* int */, buff /* char* */, 50);
然而,编译出现错误“read was not declared in this scope; did you mean 'fread'?”。
在使用 g++ 将给定的功能 C 客户端代码简单地编译为 C++ 文件时,我得到了同样的错误。
此 C++ 程序中包含的内容是(按顺序):iostream、netdb.h、netinet/in.h、stdio.h、stdlib.h、string.h, sys/socket.h, sys/types.h
std 命名空间正在使用中。 我做错了什么?
你可能错过了#include <unistd.h>
但我也建议使用 recv
,它在 sys/socket.h
如果您遇到困难,请始终尝试联机帮助页:man read.2