关于 Linux环境中 C++ 的 I/O 多路复用技术 以及 select poll epoll 的详解
ps.(本文档默认你了解Linux文件句柄操作和基础的socket编程) 为什么需要使用 I/O 多路复用技术?我们知道,read()是阻塞的,假设我们有多个文件描述符需要监听,应该怎么办呢?如果一个个的调用read(),假设某一个read()的过程中一直没有读取到数据,那就会阻塞在这里,后面的数据就无法即使读取。 123456789101112131415161718int main() { char buffer[1024] = {0}; // 缓冲区用于存储读取到的数据 std::cout << "Please enter some text: "; // 从标准输入(文件描述符0)读取最多1024字节数据,阻塞式I/O ssize_t bytes_read = read(0, buffer, sizeof(buffer) - 1); // FD 0 表示标准输入 if (bytes_read > 0) { ...
C++代码规范
头文件通常每个.cc文件都要配套个同名的.h文件 独立编译头文件需要能够独立编译 #define保护所有头文件都应该用 #define 防护符来防止重复导入. 防护符的格式是: <项目><路径><文件名>H .例如, foo 项目中的文件 foo/src/bar/baz.h 应该有如下防护: 1234#ifndef FOO_BAR_BAZ_H_#define FOO_BAR_BAZ_H_...#endif // FOO_BAR_BAZ_H_