Linux下系统函数
rand()函数
获取02147483647(0RAND_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 *