最近在写网络安全实验,感觉欠缺的东西太多了,边写边总结记录一下。
Linux+C
一些函数积累
地址转换
头文件:<arpa/inet.h>
;
in_addr_t inet_addr(const char* cp)
:将字符串形式的IP地址 -> 网络字节顺序 的整型值
-
返回值:
in_addr_t
一般为32位unsigned int
,若字符串有效,则将字符串转换为32位二进制网络字节序的IPV4地址;否则,为INADDR_NONE;
char *inet_ntoa(struct in_addr)
:网络字节顺序的整型值 ->字符串形式的IP地址(点分十进制)
参数:in_addr为结构体,表示32位IP地址
struct in_addr{
in_addr_t s_addr; //32位unsigned int
}
系统调用
进程:
头文件:<sys/types.h>
and <unistd.h>
pid_t getpid(void)
:返回当前进程表示;
pid_t getppid(void)
:返回父进程标识;
返回值:pid_t 定义如下,使用此标识可能是为了更好的移植性;不同的环境可能定义的类型不一样
sys/types.h:
typedef short pid_t; /* used for process ids */
获取时间
头文件:<sys/time.h>
int gettimeofday(struct timeval *tv, struct timezone *tz)
tv返回目前的时间、tz所指的结构返回当时地区的信息;返回值 0 成功;-1失败,原因存于errno;
struct timeval{
long tv_sec; //秒
long tv_usec;//微秒
};
struct timezone{
int tz_minuteswest;//和greenwich时间查了多少分钟
int tz_dsttime; //DST 时间的修正方式
};