1.stat函数讲解
表头文件: #include <sys/stat.h>
#include <unistd.h>
定义函数: int stat(const char *file_name, struct stat *buf);
函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
返回值: 执行成功则返回0,失败返回-1,错误代码存于errno
错误代码:
ENOENT 参数file_name指定的文件不存在
ENOTDIR 路径中的目录存在但却非真正的目录
ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接
EFAULT 参数buf为无效指针,指向无法存在的内存空间
EACCESS 存取文件时被拒绝
ENOMEM 核心内存不足
ENAMETOOLONG 参数file_name的路径名称太长
当然有跨平台的方法:
表头文件: #include <sys/stat.h>
#include <unistd.h>
定义函数: int stat(const char *file_name, struct stat *buf);
函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
返回值: 执行成功则返回0,失败返回-1,错误代码存于errno
错误代码:
ENOENT 参数file_name指定的文件不存在
ENOTDIR 路径中的目录存在但却非真正的目录
ELOOP 欲打开的文件有过多符号连接问题,上限为16符号连接
EFAULT 参数buf为无效指针,指向无法存在的内存空间
EACCESS 存取文件时被拒绝
ENOMEM 核心内存不足
ENAMETOOLONG 参数file_name的路径名称太长
2表单的编码规则
表单中每个每个字段用字段名后跟等号,再接上上这个字段的值来表示,每个字段之间的内容用&连结;
所有的空格符号用加号代替,所以在编码码段中出现空格是非法的;
特殊的字符比如标点符号,和一些有特定意义的字符如“+”,用百分号后跟其对应的ACSII码值来表示。
3
nt64_t用来表示64位整数,在32位系统中是long long int,在64位系统中是long int,所以打印int64_t的格式化方法是:
[cpp]
view plain
copy
- printf("%ld", value); // 64bit OS
- printf("%lld", value); // 32bit OS
[cpp]
view plain
copy
- #include <inttypes.h>
- printf("%" PRId64 "\n", value);
- // 相当于64位的:
- printf("%" "ld" "\n", value);
- // 或32位的:
- printf("%" "lld" "\n", value);
4服务器按照应用的简单分类
文件服务器,数据库服务器,邮件服务器,web服务器。
一般来说服务器配置较高,可以实现7*24小时供电等
5UNIX的一些标准和实现
标准有ISO C,IEEE POSIX, Single UNIX Specification,FIPS等等
实现有SVR4,4.4BSD,FreeBSD,Linux,Mac OS X,Solaris等等
6
URL的格式,URL的格式由下列三部分组成:
- 第一部分是协议(或称服务方式)
- 第二部分是存有所请求资源的主机IP地址(有时也包括端口号)
- 第三部分是主机资源的具体地址,如目录和文件名等
第一部分和第二部分之间用“://”符号隔开,第二部分和第三部分用“/"符合隔开。第一部分和第二部分是不可缺少的,第三部分可以省略。
scheme://username:password@domain:port/path?query_string#anchor
scheme就是上面我们所说的协议部分,web服务器中通常用的就是HTTP和HTTPS,但它还可以是gopher、wais、ftp、mailto。
usename:password@domain:port就是我们上面说的第二部分,一般我们都不用输入用户名和密码、还有端口(http协议的端口号是80,一般默认都用这个),而只是直接输入域名或者ip地址。path?query_string#anchor就是我们说的第三部分,path指定资源在服务器上的路径(注意,不一定是web服务器上的绝对路径,而是经过URL重写之后的路径,但不管怎么说,它还是唯一标识了资源在服务器上的路径);后面的query_string包含传递个web应用程序(如CGI)的数据。查询字符串以键/值对的形式,并且每个键值对之间用&隔开,如useId=aa&password=13;最后当使用HTTP,#anchor表示web页面的某一个部分。
上面说到URI和URL,肯定还有人不知道它们的区别,下面解释下。URI:统一资源标识符;URL:统一资源定位符;URN:统一资源名称。其中,URL、URN是URI的子集。它们的关系如下图所示:
Web上地址的基本形式是URI,它代表统一资源标识符。有两种形式:URL、URN。二者好比,URN就像一个人的名字,然后URL就像这个人所在的位置地址。换句话说,URN定义了一个元素的标识符,URL提供方法找到它。即URN不依赖于位置,并且有可能减少失效连接的个数。