![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
后端(基础)
幻世111
这个作者很懒,什么都没留下…
展开
-
UNIX环境高级编程:第七章:进程环境
UNIX环境高级编程:第七章:进程环境int main( int argc, char *argv[] );argc是命令行参数的数目,包括程序名在内,argv[0]是程序名,argv[argc]是NULL,中间的是命令行参数; argv是指向参数的各个指针所构成的数组,即指针数组; 启动例程从内核取得命令行参数和环境变量值,然后按上述方式调用main函数做好安排。1. 进程终...转载 2018-01-16 17:56:00 · 174 阅读 · 0 评论 -
UNP-UNIX网络编程 第七章:获取/设置套接字选项的方法
一int getsockopt(int sockfd, int level, int optname, void* optval, socklen_t* optlen); int setsockopt(int sockfd, int level, int optname, const void* optval, socklen_t optlen); //两个函数成功返回0,...转载 2018-01-17 16:56:46 · 221 阅读 · 0 评论 -
UNP-UNIX网络编程 第八章:基本udp套接字编程
一.使用UDP的场合:DNS(域名系统)、NFS(网络文件系统)、SNMP(简单网络管理协议) UDP没有像TCP那样的连接,客户端直接使用sendto函数向某服务器发送数据报,服务器端一直recvfrom函数阻塞,以接收任何客户端发送的数据,把数据报再发送给客户协议地址。 两个新函数:sendto()和recvfrom();connect()在UDP套接字中的用法;异步错误。in...转载 2018-01-17 16:57:08 · 205 阅读 · 0 评论 -
UNP-UNIX网络编程 第十一章:名字与地址转换
(一) 域名系统(DNS)DNS主要用于主机名和IP地址之间的映射。主机名可以是简单的名字ljm,也可以是全限定域名ljm.localdomainbaidu.com等。1.资源记录DNS中的条目称为资源记录(RR)。我们感兴趣的RR类型只有几个: A A记录把一个主机名映射为一个32位的IPv4地址。 AAAA 4A记录把一个主机名映射为一个128位的IPv6...转载 2018-01-17 16:57:48 · 293 阅读 · 0 评论 -
UNP-UNIX网络编程 第十四章:高级I/O函数
(一)概述首先是在I/.O操作上设置超时,三种方法; read和write这两个函数的三个变体: recv和send运行通过第四个参数从进程到内核传递标志; readvhe和writev允许指定往其中输入数据或从其中输出数据的缓冲区向量; recvmsg和sendmsg结合了其他I/O函数的所有特性,并具备接收和发送辅助数据的新能力。(二)套接字超时1、套接字的I/O操...转载 2018-01-17 16:58:17 · 197 阅读 · 0 评论 -
UNP-UNIX网络编程 第十五章:域协议
Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务器通讯的一种方式,单个主机上执行通信,也就是所谓的进程间通信(IPC),所以Unix域套接字协议可以视作IPC方法之一。 Unix域提供两类套接字:字节流套接字(类似TCP)和数据报套接字(类似DUP)。 Unix域中用于标识客户和服务器的协议地址是普通文件系统中的路径名(但需要和Unix域套接字关联起来),否则无法读写这些文...转载 2018-01-17 16:58:43 · 193 阅读 · 0 评论 -
UNP-UNIX网络编程 第十六章:非阻塞式I/O
(一) 概述套接字默认状态是阻塞的。也就是说当发出一个不能立即完成的套接字调用时,进程将被投入睡眠,等待相应操作的完成 ,一般分为四类: 1. 输入操作:包括read、readv、recv、recvfrom、recvmsg这5个函数。当套接字缓冲区没数据可读时,进程将被投入睡眠状态,直到有数据可达。 2. 输出操作:包括write、writev、send、snedto和sendmsg这5...转载 2018-01-17 16:59:02 · 194 阅读 · 0 评论 -
UNP-UNIX网络编程 第二十六章:多线程
fork是昂贵的(把父进程的内存映像复制到子进程),并且需要进程间通信(IPC)机制。 线程的创建速度快(10-100 倍),同一进程中的线程共享相同的全局内存,线程之间容易共享信息,但是,这就带来了同步的问题。同一进程内的所有线程除了共享全局变量,还共享: 进程指令,大多数数据,打开的文件(即文件描述符),信号处理函数和信号处置,当前工作目录,用户ID和组ID,”这些很容易出错误”不...转载 2018-01-17 16:59:22 · 237 阅读 · 0 评论 -
UNP-UNIX网络编程 第六章:I/O复用
一.I/O模型我们看到上面的TCP客户同时处理两个输入:标准输入和TCP套接字。我们遇到的问题就是在客户阻塞于(标准输入上的)fgets调用期间,服务器进程会被杀死。服务器TCP虽然正确地给客户TCP发送一个FIN,但是既然客户进程阻塞于从标准输入读入的过程,它将看不到这个ROF,知道从套接字读时为止(可能已经过了很长时间)。这样的进程需要一种预先告知内核的能力,使得内核一旦发现进程指定的一个...转载 2018-01-17 16:55:36 · 402 阅读 · 0 评论 -
UNP-UNIX网络编程 第五章:TCP客户/服务器程序示例
{ int n; if((n = socket(family, type, protocol)) < 0) { printf("socket() error!"); exit(0); } else return n;}服务器{ ssize_t n; char...转载 2018-01-16 20:10:13 · 253 阅读 · 0 评论 -
UNIX环境高级编程 第八章:进程控制
1.专用进程:ID0是调度进程,被称为交换进程,不执行任何磁盘程序,被称为系统进程 ID1是init进程,永远不会死亡的一般用户进程,而不是kernel里的系统进程,事物偶有孤儿进程的父进程。是内核在bootstrap结束后调用。 ID2是页守护进程,负责支持虚拟存储系统的分页操作。2.forkexec系统调用从指定程序重新初始化进程,虽然进程还在,但程序已经改变了。exec初...转载 2018-01-16 18:01:14 · 229 阅读 · 0 评论 -
UNIX环境高级编程 第十章:信号
什么是异步事件:简单点来说,就是,你一边看书,又一边在听歌。两者之间互不干扰。编程中最常见的异步事件,就是ajax调用。页面没有刷新,但某个局部已经更新。你打开淘宝,你会发现,页面先加载,但图片过一会才加载。这就是异步的应用。 每个信号都有一个名字,这些名字都以三个字符SIG开头.在头文件:signal.h中,这些信号都被定义为正整数(信号编号 > 0)。信号是异步事件的经典实例,进...转载 2018-01-16 18:45:07 · 364 阅读 · 0 评论 -
UNIX环境高级编程 第十一章 线程
fork是昂贵的(把父进程的内存映像复制到子进程),并且需要进程间通信(IPC)机制。 线程的创建速度快(10-100 倍),同一进程中的线程共享相同的全局内存,线程之间容易共享信息,某些线程在阻塞的时候还有另外一些线程可以运行,所以多线程程序在单处理器上运行还是可以改善响应时间和吞吐量。但是,这就带来了同步的问题。 (1)同一进程内的所有线程除了共享全局变量,还共享: 进程指令,大多数数据...转载 2018-01-16 19:10:59 · 199 阅读 · 0 评论 -
UNIX环境高级编程 第十二章:线程控制
上一章讲了线程以及线程同步的基础知识。本章将讲解控制线程的行为方面的详细内容,介绍线程属性和同步原语属性。前面的章节中使用的都是它们的默认行为,没有进行详细的介绍。还将介绍同一进程的多个线程之间如何保持数据的私有性。最后讨论基于进程的系统调用如何与线程进行交互。(一)线程属性1. pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为。(1)每个对象...转载 2018-01-16 19:26:41 · 187 阅读 · 0 评论 -
UNIX环境高级编程 第十三章:守护进程
守护进程(daemon)是生存期长的一种进程。它们常常在系统引导装入时启动,仅在系统关闭时才终止(生存期)。 因为它们没有控制终端,所以说它们时在后头运行的。UNIX系统有很多守护进程,它们执行日常事务活动。 本章将说明守护进程的结构,以及如何编写守护进程程序。因为守护进程没有控制终端,我们需要了解在出现问题时,daemon如何报告出错情况。1. 守护进程的特征先来看看一些常用的系...转载 2018-01-16 19:33:13 · 220 阅读 · 0 评论 -
UNIX环境高级编程 第十五章:进程间通信:是指在不同进程之间传播或交换信息
IPC的方式通常有管道(包括无名管道和命名管道(FIFO))、消息队列、信号量、、共享存储、Socket、Streams等。其中 Socket和Streams支持不同主机上的两个进程IPC。1.管道,通常指无名管道,是 UNIX 系统IPC最古老的形式。它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。它只能用于具有亲缘关系的进程之间的通信(也是父子进程或者兄弟进程之...转载 2018-01-16 19:43:02 · 297 阅读 · 0 评论 -
UNP-UNIX网络编程 第三章:套接字编程简介
1.IPV4套接字地址结构:#include <netinet/in.h>struct in_addr { in_addr_t s_addr; //32bit}struct sockaddr_in { uint8_t sin_len; // sa_family_t sin_family; //AF_INET...转载 2018-01-16 19:57:28 · 232 阅读 · 0 评论 -
UNP-UNIX网络编程 第四章:基本TCP套接字编程
1.#include <sys/socket.h>int socket(int family, int type, int protocol);//返回:若成功则返回非负描述符,出错则为-1,family是协议族,type表明套接字类型family参数指定协议族,也被称为协议域。IPV4:AF_INET、IPV6:AF_INET6。type参数指定套接字类型。字节流:S...转载 2018-01-16 20:02:32 · 186 阅读 · 1 评论 -
同步IO、异步IO、阻塞IO、非阻塞IO
一直对这四个东东的概念很模糊,放一起更模糊,根据别人写的总结一如下: “阻塞”与”非阻塞”与”同步”与“异步”不能简单的从字面理解,往往不同上下文中它们的意思是不一样的。1.同步 / 异步(同步/异步主要针对C端: )描述的是执行IO操作的主体是谁,同步是由用户进程自己去执行最终的IO操作。异步是用户进程自己不关系实际IO操作的过程,只需要由内核在IO完成后通知它既可,由内核进程来执行最终的...转载 2018-01-17 17:05:10 · 166 阅读 · 0 评论