描述
C 库函数 char *getenv(const char *name) 搜索 name 所指向的环境字符串,并返回相关的值给字符串。
声明
下面是 getenv() 函数的声明。
char *getenv(const char *name)
参数
- name -- 包含被请求变量名称的 C 字符串。
返回值
该函数返回一个以 null 结尾的字符串,该字符串为被请求环境变量的值。如果该环境变量不存在,则返回 NULL。
端口:
unix系统有保留端口号的概念。只有具有超级用户特权的进程才允许给它自己分配一个保留端口号。
客户端只需保证该端口号在本机上是惟一的就可以了。 客户端口号因存在时间很短暂又称临时端口号;大多数TCP/IP实现给临时端口号分配1024---5000之间的端口号。大于5000的端口号是为其他服务器预留的。
getpid与getppid:
getpid返回当前进程标识,getppid返回父进程标识。
用法:
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
exec与fork的继承:
当一个进程调用fork时,因为子进程在开始时复制父进程的存储映像,信号捕捉函数的地址在子进程中
是有意义的,所以子进程继承父进程的信号处理方式。
但是当子进程调用exec后,因为exec运行新的程序后会覆盖从父进程继承来的存储映像,那么
信号捕捉函数在新程序中已无意义,所以exec会将原先设置为要捕捉的信号都更改为默认动作。
fork子进程会继承父进程的信号,和打开的描述符。
exec也会继承调用进程的打开的描述符,不过可以通过fcntl函数关闭.不继承信号
文件描述符引用计数:
file对象有引用计数,记录了引用这个对象的文件描述符个数,只有当引用计数为0时,内核才销毁file对象,因此某个进程关闭文件,不影响与之共享同一个file对象的进程.socket编程时,子进程close一
个继承的fd,只是限制了自己的进程使用这个描述符,并不会发送FIN
多宿主机:
一个计算机有多个IP地址,最简单的情况就是机器里有两块网卡,每个卡有不同的IP地址,分别连接不同的网段。
但不是多宿主机主机就一定有多个网卡。有多个IP地址是一定的!
read函数的返回值:
阻塞:读入FIN返回0,读入数据返回正数,出错返回-1.(考虑E_INTR)
非阻塞:读入FIN返回0,读入数据返回正数,出错返回-1.(考虑E_AGAIN,E_WOULDBLOCK)
fileno(stdin,stdout,stderr的类型)
stdin,stdout,stderr是FILE *
RTT(Round-Trip Time): 往返时延
(tcp)connnect 不能重启
tcp的connect函数一旦出错,不能直接再次调用。必须重新创建套接字。。。
udp的connect函数可以再次连接,更改结构体的值从而使连接的对象改变。或者把结构体
的地址族改成AF_UNSPEC。从而断开连接。注意,断开的是udp的connect连接的进程。
套接字类型 | write或send | 不指定目的地的sendto | 指定目的地的sento |
TCP套接字 | 可以 | 可以 | EISCONN |
UDP套接字,已连接 | 可以 | 可以 | EISCONN |
UDP套接字,未连接 | EDESTADDRREQ | EDESTADDRREQ | 可以 |
>>从进程到内核传递套接字的函数:bind connect sendto
内核到进程的函数: accept recvfrom getsockname getpeername(值结果参数)
maxfdp1的含义:
maxfdp1是待测试描述符的个数,从0,1,2.3....maxfdp1-1将被select测试
select函数与stdio混用的不良后果:
//参考转载的文章
shutdown函数:
//另一片文章: shutdown和套接字选项
弱端系统模型,强端系统模型(udp)
弱端系统模型 (weak end system model): IP实现接受目的地址为本主机任一IP地址的数据报,而不
管数据报到达的接口。
注:当从二层接收到分组时,匹配系统的所有的接口的所有的ip地址。
强端系统模型 (strong end system model): 只接受达到接口与目的地址一致的数据报。
注:当从二层接收到分组时,匹配接收到该分组的接口的所有的ip地址
A和B都是主机的IP地址,属于不同的网络接口。一个报文内带的目的地址是A,却从地址为B的接口进来,接受还是不接受?接受,弱;不接受,强。
从安全角度考虑,应该选择强端系统模型。
ICMP:
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。
udp详解:
//参见另一篇转载的文章