摘要:编译和链接 可分为四个过程:预处理(prepressing)、编译(Compilation)、汇编(Assembly)和链接(Linking) 预编译: 源代码文件.c和相关的头文件被预编译器cpp预编译成一个.i文件。 阅读全文
posted @ 2020-03-09 09:59 c++11 阅读 (8) 评论 (0) 编辑
摘要:线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体。线程可分为内核线程和用户线程。 线程实现可分为三种模式:完全在用户空间实现、完全有由内核调度和双层调度。 1.创建和结束线程 int pthread_create(); void pthread_exit(); int pthread_ 阅读全文
posted @ 2020-03-01 17:13 c++11 阅读 (10) 评论 (0) 编辑
摘要:1. fork系统调用 pid_t fork(); 该函数的每次调用都返回两次,在父进程中返回子进程的PID,在子进程中则返回0. 该返回值是后续代码判断当前进程是父进程还是子进程的依据。fork调用失败时返回-1,并设置errno。 fork函数复制当前进程,在内核进程表中创建一个新的进程表项。新 阅读全文
posted @ 2020-03-01 17:00 c++11 阅读 (18) 评论 (0) 编辑
摘要:Linux提供了三种定时方法: socket选项 SO_RCVTIMEO, SO_SNDTIMEO SIGALRM信号 I/O复用系统调用的超时函数 1. SO_RCVTIMEO, SO_SNDTIMEO 分别用来设置socket接收数据超时时间和发送数据超时时间。 阅读全文
posted @ 2020-03-01 14:22 c++11 阅读 (7) 评论 (0) 编辑
摘要:信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。 1.发送信号 int kill(pid_t, int sig); 2.中断系统调用 如果程序在执行处于阻塞状态的系统调用时接收到信号,并且我们为该信号设置了信号处理函数,则默认情况下系统调用将被中断,并且err 阅读全文
posted @ 2020-02-28 19:02 c++11 阅读 (7) 评论 (0) 编辑
摘要:1. select系统调用 在一定时间内监听用户感兴趣的文件描述符上的可读、可写和异常事件。 int select(int nfds, fd_set* readfds, fd_set* writefds, fd_set* exceptfds, struct timeval* timeout); nf 阅读全文
posted @ 2020-02-28 18:46 c++11 阅读 (21) 评论 (0) 编辑
摘要:服务器有三个主要模块: (1)I/O处理单元 (2)逻辑单元 (3)存储单元 1.服务器模型 C/S模型 逻辑:服务器启动后,首先创建一个或多个监听socket,并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接。 服务器运行稳定后,客户端就可以调用connect 阅读全文
posted @ 2020-02-28 11:41 c++11 阅读 (11) 评论 (0) 编辑
摘要:Linux服务器程序一般以后台进程形式运行,后台进程又称守护进程。它没有控制终端,不会接收到用户输入。守护进程的父进程通常是init进程(PID为1)。 Linux服务器程序有一套日志系统 Linux服务器程序一般以某个专门的非root身份运行 Linux服务器程序通常是可配置的 Linux服务器程 阅读全文
posted @ 2020-02-27 16:29 c++11 阅读 (2) 评论 (0) 编辑
摘要:用于创建文件描述符的函数:pipe, dup, dup2 用于读写数据的函数:readv, writev, sendfile, mmap, munmap, splice, tee 用于控制I/O行为和属性的函数:fcntl 1.pipe函数 int pipe(int fd[2]); pipe函数可用 阅读全文
posted @ 2020-02-27 16:01 c++11 阅读 (10) 评论 (0) 编辑
摘要:1. socket地址API 大端字节序:一个整数的高位字节存储在内存的低地址处,低位字节存储在内存的高地址处。 小端字节序:整数的高位字节存储在内存的高地址处,而低位字节则存储在内存的低地址处。 现代PC机采用小端字节序,又称为主机字节序。 大端字节序主要在网络上传输,称为网络字节序。 2. 创建 阅读全文
posted @ 2020-02-27 14:23 c++11 阅读 (10) 评论 (0) 编辑