讲解视频 1. select系统调用 上世纪八十年代就出现了该API,现在仍有很多系统再用该API。 select系统调用的用途是,在指定时间内,监听用户感兴趣的文件描述符上的可读,可写和异常事件。 其核心思想是:在指定时间内轮训一定数量的文件描述符,以测试其中是否有就绪者。 1. select API 函数原型 int select(int nfd...
1. 服务器基本框架 IO处理单元 一个专门的接入服务器,他实现负载均衡,从所有的逻辑服务器中选取负荷最小的一台来为新客户服务。 逻辑单元 一个逻辑单元通常是一个进程或者线程,它分析并处理客户数据。 网络存储单元 数据库或者缓存(非必须) 2. IO模型 同步IO想应用程序通知的是IO就绪事件,异步IO向应...
1. 日志函数 syslog syslog 2. 用户信息 UID(真实用户ID) 与 EUID(有效用户ID) 为什么引入EUID(有效用户id)? 允许不同的用户以UID的权限运行改程序。设置set-user-id字段,任何用户启动该程序,其有效用户就是该程序的所有者 demo 切换用户 /* * 以root身份启动的进程切换为一个普通用户身份运行 */ st...
0. pipe 与 dup 1. pipe 默认为阻塞, ` int socketpair(int domain, int type, int protocol, int sv[2]);` 2. dup int dup(int oldfd); int dup2(int oldfd, int newfd); 3.demo int main(int argc,char *argv[...
03 尽可能使用const 1. 顶层与底层指针 书中的说法可能会好理解一点,出现在*号左边,表示被指物是常量。const 出现在*号的右边,表示指针是常量。出现在两边表示指针与被指物都是常量。 void f1(const Widget *pw); // 这两种写法等价 void f1(Widget const *pw); 2. 迭代器的const指针 vector&l...
1. socket 地址API 1.1 主机字节序与网络字节序 主机字节序: 简单来说,就是由多个字节组成的一个整数,字节的排序方式是从左到右还是从右到左。 分类: 大端字节序 小端字节序(主机字节序) 即使同一个主机上的两个进程通信,也要考虑字节序的问题。 解决方法:发送端都转为大端字节序,接受端都知道接受的都是大端字节序。 字节序的转换:见<net...
1. 概览 客户/服务器,交互过程包含下列3个操作: 服务器设立服务 客户链接到服务器 服务器和客户处理事务 1.1 操作1,建立服务器端socket 创建一个socket socket = socket(PF_INET,SOCK_STREAN,0); 给socket绑定一个地址 ...
1. 概览 Unix 怎么处理来自不同数据源的数据? 磁盘与设备文件 open命令链接,read write传递数据。 管道 pipe 命令创建,fork共享,read 与 write 传递。 Sockets 用Socket,lisetn 和 connect 链接。 用read 和 write 传递数据。 2. 从 ...
1. shell 编程 who | sort > prev // 同时执行who 与 sort 将who的输出直接送到sort的输入 while true ;do sleep 30 who | sort > curr echo "logged out :" comm -23 prev curr // 删除第二列与第三列 仅留prev内容 ...
1. 一个完整的shell命令行解析器 main.c #include "smsh.h" #define DFL_PROMPT "> " /** * 1.next_cmd 从流中读入下一条命令 * 2. splitline 将一个字符串分解为一个字符串数组 并返回 * 3. execute 来运行这个命令 */ int main(){ char *cmdl...