Linux下系统函数

这篇博客详细介绍了Linux系统下的各种函数,包括rand()随机数生成、字符函数、系统时间和日期函数,以及环境控制、内存分配、数据结构、文件系统API如chmod()、umask()、stat()等。此外,还讲解了进程间通信的信号、管道、消息队列和共享内存,特别是守护进程的编写及其注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值