龙潭书斋 -- 332




引言Unix系统中大多数文件IO只需要5个函数:open、read、write、lseek、close这些都是不带缓冲的IO,即每个read和write都调用内核中的一个系统调用,需要注意的是,这里的“不带缓冲的IO”指的是在用户的进程中对这些函数不会自动缓冲,而事实上,所有的磁盘IO都要经过内核的块缓冲区(即内核的缓冲区高速缓存),只有对原始的磁盘设备的IO例外 文件描述符对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,当打开或创建一个文件时,内核会返回一个文件描述符。当读或写一个文件时,使用open或creat返回的文件描述符标识该文件,将其作为参数传给read或write。文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错输出相关联。分别对应符号变量STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO(定义于 fcntl.h 中)。 open函数打开或创建文件,定义于 fcntl.h 头文件中int open( const char * pathname, int flags, . . . /*mode_t mode*/); 调用成功返回文件描述符,否则返回-1 第三个参数. . .表
#技术帖    #linux    #unix    #c++   

200x200


〇、概述本文分别实现了最简单的基于C语言的TCP socket服务器与客户端程序,出于学习的目的,本文中的程序只是 unix 提供的系统调用进行了简单的封装,并进行了相应

#linux    #unix    #c++    #cpp   

200x200


getsockname 和 getpeername 两个函数一个返回与某个套接字关联的本地协议地址,一个返回与某个套接字关联的外地协议地址int getsockname

#读书笔记    #技术帖    #c语言    #unp   
只有一个进程的服务器是最简单的实现,被称为“迭代服务器”,但是一般的我们并不希望整个服务器被单个用户长期占用,而是希望同时服务多个用户,因此就需要并发服务器UNIX中编写并发服务器程序最简单的方法就是fork一个子进程来服务每个客户下面提供了并发服务器程序的框架:pid_t pid; int listenfd, connfd; listenfd = socket ( ... ); bind (listenfd, ... ); listen (listenfd, LISTENQ); for ( ; ; ) { connfd = accept (listenfd, ... ); if ( (pid = fork()) == 0 ) { close (listenfd); doit (connfd); close (connfd); exit (0); } close (connfd); } 当一个连接建立时,accept 返回,服务器接着调用 fork(关于 fork 函数的使用可以参看:创建子进程 -- fork、vfork,fork 与竞争条件和exec 函数 -- execl、execv、execle、execve、execlp、execvp),然后由子进程服务
#读书笔记    #技术帖    #tcp    #socket   

200x200


〇、基本的TCP客户/服务器程序的套接字函数 一、socketsocket 函数用来指定期望的通信协议类型int socket (int family, int type, int

#读书笔记    #技术帖    #linux    #unix   

200x200


〇、概述本章节主要介绍在套接字编程中常常需要使用的几个函数,关于TCP套接字编程中连接的建立和终止等需要用到的函数,可以参见:TCP连接的建立和终止和基本TCP套接字函数 一、字节排序函数对

#读书笔记    #技术帖    #c++    #cpp   
输入与输出Python 使用 print 语句进行输出,使用 raw_print()函数进行输入>>> num = raw_input('Now enter a number: ') Now enter a number: 123 >>> print '%s your input : %d' % ('doubling', int(num)*2) doubling your input : 246 可以看到,raw_input() 函数首先会将参数打印出来,并等待用户输入print 语句的用法和 C 语言中 printf() 函数的用法类似,也拥有 %d、%s、%f 等字符串格式操作符print 会在每行结尾自动添加换行符,如果不需要添加,则在最后写逗号 , 即可str = 'hello world' print str print str, print str 输出:hello world hello world hello world  python3.0 以后的变化需要注意的是,python3.0版本后对于上面的例子有以下两个修改:raw_in
#读书笔记    #技术帖    #龙潭书斋    #python   

200x200


〇、简介与斐波那契堆一样,是一种被称为可合并堆的数据结构如我们之前了解的,二叉堆在堆排序中的性能就很好:堆排序 但是,我们有的时候需要将两个二叉堆进行合并,这时的性能就不能让人满意了 一、二

#读书笔记    #技术帖    #算法    #算法导论   

200x200


插入排序是最简单排序算法之一,其过程非常类似于玩扑克牌时排列扑克牌的过程  /* * file: main.c * author: 龙泉居士 * date: 2012-12-22

#读书笔记    #技术帖    #算法    #算法导论   

200x200


〇、概述IPv4 套接字地址结构通常也称为“网际套接字地址结构”,以 sockaddr_in 命名,定义在 <netinet/in.h> 

#技术帖    #linux    #unix    #ip   



京ICP备15018585号