C小项目Tinyhttpd用到的知识汇总


Tinyhttpd的Github链接

介绍

Tinyhttpd 是J. David Blackstone在1999年写的一个不到 500 行的超轻量型 Http Server,用来学习非常不错,可以帮助我们真正理解服务器程序的本质。官网:http://tinyhttpd.sourceforge.net

用到的相关知识

1. 源码注释

tinyhttp源码阅读(注释)

2. cgi(common gateway interface)

https://zhuanlan.zhihu.com/p/25013398

excel运行gui程序

3. socket 嵌套字

socket原理&TCP/IP及相关函数
socketaddr&htons
htons(host to network, short),把主机字节序转换成网络字节序
htonl(host to network, long),作用同上

由于网络上和主机的字节编码方式可能不一样(大端编码和小端编码),网络传输同意使用的是大端方式,在进行通信时要把编码方式进行统一,以免因为不同的编码方式造成错误。

socket的accept()函数
socket编码之accept函数
socket中的accept函数理解

4. fork创建子进程及父子进程间的通信

linux中fork函数及子进程父进程进程先后
int fork(), 创建一个新进程,系统给新进程分配资源,例如存储数据和代码的空间,然后把原来进程的所有值(包括数据、代码)都复制到新进程,只有少数值不同,相当于克隆了一个自己。父进程的返回值是子进程的pid, 子进程的返回值是0, 若返回值是-1则说明fork失败。父子进程的执行没有确定的先后关系,要看系统的调度安排。
父进程和子进程之间的通信可以通过管道进行
int pipe(int fd[2]) 创建一个管道,若成功则为数组fd分配两个文件描述符。管道若创建成功返回0, 失败返回-1。fd[1]写数据,fd[0]读数据,数据单向流动,FIFO。管道只能用于父子进程或兄弟进程间的通信。管道对于管道两端的进程来说,就是一个文件,但它是单独构成一个文件系统,且只存在于内存之中。

5. 环境变量

环境变量的写putenv()和读getenv()
按照name=value格式写。

6. 数据类型或结构

intptr_t
int 类型的指针,为了避免不同平台上存储位数不一样造成的影响,用不同的整形来作为指针。intptr_t总是所在平台的位数
intptr_t详解

strut stat
state 关于文件状态的结构体
int stat(const char *restrict pathname, struct stat *restrict buf)
buf用来存储文件pathname相关的内容(如文件大小、修改时间等),返回值为0时表示成功, 返回值为-1则表示失败,错误代码保存在errno中。
struct stat 操作 小结

7. 其他函数

strcasecmp(const char * c1, const char *c2) 不区分大小写, 相同则返回0
strcmp(const char * c1, const char *c2) 区分大小写, 相同则返回0

sprintf()用于格式化输出到字符串,主要用于int,double等数据向字符串的转化
strcpy() 用于字符串的复制,主要适用于字符串,复制到源串的末尾终止

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值