02 2017 档案

摘要:Linux下谈论I/O复用、高并发,一定会说到epoll。因为epoll是最有效的I/O复用方式。 epoll的使用非常简单,总共3个API: Linux2.6.8之后,size参数已被忽略,为了向前兼容,size大于0即可。 op有3种取值:EPOLL_CTL_ADD、EPOLL_CTL_MOD、 阅读全文
posted @ 2017-02-21 20:54 Sawyer Ford 阅读(400) 评论(0) 推荐(0)
摘要:在socket编程之并发回射服务器3篇文章中,提到了3种设计范式: 多进程 父进程阻塞于accept调用,然后为每个连接创建一个子进程。 多线程 主线程阻塞于accept调用,然后为每个连接创建一个子线程。 I/O复用 主进程阻塞于select调用,select负责监听listenfd和connfd 阅读全文
posted @ 2017-02-20 20:19 Sawyer Ford 阅读(301) 评论(0) 推荐(0)
摘要:在socket编程之并发回射服务器一文中,服务器采用多进程的方式实现并发,本文采用多线程的方式实现并发。 多线程相关API: pthread_join类似waitpid,用于等待一个线程的结束。 pthread_detach将线程状态变成detachable。 一个detachable线程终止后,它 阅读全文
posted @ 2017-02-19 13:44 Sawyer Ford 阅读(189) 评论(0) 推荐(0)
摘要:守护进程(daemon)是在后台运行且不与任何控制终端关联的进程。 与终端脱离有两个目的: 创建守护进程前首先需要理解几个概念:进程组、会话、控制终端。 每个进程除了有一进程ID(PID)之外,还属于一个进程组。 进程组是一个或多个进程的集合,每个进程组有一个进程组ID。 每个进程组有一个组长进程( 阅读全文
posted @ 2017-02-18 15:11 Sawyer Ford 阅读(920) 评论(0) 推荐(0)
摘要:1. 添加用户 2. iptables里删除DROP 3306端口的规则 参考资料: 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost 阅读全文
posted @ 2017-02-16 11:28 Sawyer Ford 阅读(4177) 评论(0) 推荐(0)
摘要:承接上文:socket编程之并发回射服务器 为了让服务器进程的终止一经发生,客户端就能检测到,客户端需要能够同时处理两个描述符:套接字和用户输入。 可以使用select达到这一目的: 函数声明如下: 之前的服务器程序通过多进程的方式来处理并发连接,我们也可以使用select对其进行改造: #incl 阅读全文
posted @ 2017-02-15 20:07 Sawyer Ford 阅读(369) 评论(0) 推荐(0)
摘要:对于一次I/O操作(以read为例),数据首先被拷贝到内核的某个缓冲区,然后再从内核缓冲区拷贝到应用进程缓冲区。 因此,一次I/O操作通常包含两个阶段: (1) 等待数据准备好 (2) 从内核向进程复制数据 Unix有5种I/O模型: 阻塞式I/O 非阻塞式I/O I/O复用(select, pol 阅读全文
posted @ 2017-02-13 21:11 Sawyer Ford 阅读(173) 评论(0) 推荐(0)
摘要:使用到的函数: 服务器程序: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #incl 阅读全文
posted @ 2017-02-11 17:43 Sawyer Ford 阅读(461) 评论(0) 推荐(0)
摘要:shell中的字符串索引一会从0开始,一会从1开始,见例子: 输出如下: 阅读全文
posted @ 2017-02-01 19:49 Sawyer Ford 阅读(4323) 评论(0) 推荐(0)