Linux下系统函数
rand()函数
获取02147483647(0 RAND_MAX)之间的随机数。真随机需要srand()设置种子。一般用时间作为srand()的参数
#include<unistd.h>
int rand(void)
void srand(unsigned int seed)
字符函数
头文件<ctype.h>
函数名
功能
isalnum
测试字符是否为英文或数字
isalpha
测试是否为英文字母
isascii
测试是否为ascii字符
iscntrl
测试是否为ascii控制字符
isdigit
测试是否为阿拉伯数字
islower
测试是否为小写字母
isprint
测试是否可打印字符
isspace
测试是否空格字符
ispunct
测试是否为标点或特殊符号
isupper
测试是否大写字母
isxdigit
测试是否16进制数字
系统时间和日期函数
函数名
功能
asctime
将时间和日期以字符串的格式表示
ctime
将时间和日期以字符串的格式表示
gettimeofday
获得当前时间
gmtime
把时间或日期转为GTM时间
localtime
获得目前当地的时间和日期
mktime
将时间结构数据转换为经过的秒数
settimeofday
设置当前时间
time
取得系统当前时间
#include<time.h>
//成功返回秒数,并将结果存入t,失败返回-1。错误原因存在errno中
time_t time(time_t *t)
//传入时间戳,返回tm结构体
struct tm* gmtime(const time_t *timep)
/***
struct tm
{
int tm_sec;//秒0~59
int tm_min;//分0~59
int tm_hour;//小时0~23
int tm_mday;//当前月份的日数 0~31
int tm_mon;//当前月份0~11
int tm_year;//从1900年到现在的年数
int tm_wday;//星期,星期一算起0~6
int tm_yday;//从1月1日起到今天的天数0~365
int tm_isdst;//夏时制时间
}
**/
//传入tm结构体时间,返回字符串时间
char * asctime(const struct tm *timeptr)
//传入时间戳,返回tm结构的时间
struct tm * localtime(const time_t *timep)
#include<sys/time.h>
#include<unistd.h>
//
int gettimeofday(struct timeval *tv,struct timezone *tz)
/****
struct timeval{
long tv_sec;//秒
long tv_usec;//微秒
}
struct timezone{
int tz_minuteswest;//和GTM时间差了几分钟
int tz_dsttime;//日光节约时间的状态
}
***/
环境控制函数
函数名
功能
getenv
取得环境变量的内容
pushenv/setenv
改变或增加环境变量
unsetenv
取消已经改变的环境变量
#include<stdlib.h>
//成功返回环境变量内容,失败返回NULL
char *getenv(const char * name)
//成功返回0,出错返回-1。 overwrite 0:忽略value 1:改变成参数value的内容
int setenv(const char *name, const char *value, int overwrite)
内存分配函数
函数名
功能
calloc/malloc
分配存储空间
getpagesize
获取操作系统中内存分页大小
mmap
建立内存映射
munmap
解除内存映射
free
释放分配的内存
#include<stdlib.h>
//分配内存size块大小为nmemb的内存。失败返回NULL。calloc会将内存初始化为0;
void * calloc(size_t nmemb, size_t size)
//分配size大小的内存,失败返回NULL
void * malloc(size_t size)
#include<unistd.h>
size_t getpagesize(void)
//成功返回映射区的起始地址,失败返回-1 (MAP_FAILED)
#include<unistd.h>
#include<sys/mman.h>
void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offsize)
mmap函数参数:
start:指向对应内存的起始地址。通常设为NULL
length:代表文件中多大的部分对应到内存
prot:映射区域的保护方式
PROT_EXEC:映射区域可被执行
PROT_READ:映射区域可被读
PROT_WRITE:映射区域可被写
PROT_NONE:映射区域不能存取
flags:映射区域的特性
PROT_EXEC:映射区域可被执行
PROT_READ:映射区域可被读
PROT_WRITE:映射区域可被写
PROT_NONE:映射区域不能存取
MAP_FIXED:start所指向的地址无法成功建立映射时,则放弃映射,不对地址做修正。
MAP_SHARED:映射区域的写入数据复制回文件,则允许其他映射该文件的进程共享
MAP_PRIVATE:与shared相反,多个进程不共享。
fd:open()返回的文件描述符
offsize:文件映射偏移量,0代表从文件头开始
注意:调用mmap时必须指定MAP_SHARED或MAP_PRIVATE
数据结构中常用函数
函数名
功能
bsearch
二分法搜索
lfind/lsearch
线性搜索
qsort
快速排序排列数组
#include<stdlib.h>
void qsort(void *base,size_t nmemb,size_t size, int (*compar)(const void *,const void *))
void *lfind(const void *key,const void *base,size_t *nmemb, size_t size,int (*compar)(const void *,const void *))
void *bsearch(const void *key,const void *base,size_t nmemb, size_t size,int (*compar)(const void *,const void *))
qsort()函数:
base:数组的起始地址
nmemb:数组元素的数量
size:每个元素的大小
compar:函数指针。数据相同返回0,返回1时两个数据交换,返回-1时两个数据不交换。
lfind()/lsearch()/bsearch()函数:
key:指向要查找的数据的指针
base:数组的起始地址
nmemb:数组元素的数量
size:每个元素的大小
compar:函数指针。
lfind()和lsearch()不同点在于:当找不到数据时lfind()仅会返回N