乱读天书, 不求甚解
周祎骏的个人云笔记
Toggle navigation
乱读天书, 不求甚解
主页
Linux:系统配置
Linux:用户管理
Linux:优化排错
Linux:进程调度
Linux:文件系统
Linux:网络
Linux:系统服务
Linux:安全
Linux:内核
容器:Docker
容器:containerd
容器编排:Kubernetes
IAC:Terraform
大数据:Hadoop
大数据:Zookeeper
大数据:Hbase
消息队列:rsyslog
消息队列:kafka
数据库:MySQL
数据库:MongoDB
搜索引擎:Elasticsearch
时序数据库:OpenTSDB
网站服务:Nginx
编程:Bash
编程:Perl
编程:Python
编程:C
编程:JAVA
编程:Rust
版本控制:gitlab
知识管理:docusaurus
常用小工具
关于我
标签
C 2.04 函数库stdlib.h
2018-06-17 08:23:04
51
0
0
admin
> 一些通用函数,exit,环境变量,动态内存分配 #宏变量: size_t 无符号正数,sizeof 的结果 RAND_MAX rand() 函数返回的最大值 #函数: **void exit(int status)**:使函数退出(会执行一些清理,比如关闭标准IO流) **int rand(void)**: 返回0~RAND_MAX 之间的随机数 **int mkstemp(char *template)** 创建临时目录,返回句柄,失败返回-1 template必须是数组而不是指针,最后6位必须是XXXXXX,如 ``` char template[] = "template-XXXXXX"; ``` **int atexit(void (*func)(void))**: 最多调用32个函数,在调用exit的时候运行(顺序与注册他们的顺序相反),成功返回0 ``` #include <stdio.h> #include <stdlib.h> void my_exit1() { printf("my_exit1\n"); } void my_exit2() { printf("my_exit2\n"); } main() { if (atexit(my_exit1) != 0 ) printf("Failed to add exit1\n"); if (atexit(my_exit2) != 0 ) printf("Failed to add exit2\n"); exit(1); } ``` **int system(const char *cmd)**: 跑shell 命令,system函数失败返回-1,shell 不能执行返回127, 其它按照调用命令的真实情况返回 **void abort(void)**:将SIGABRT信号发送给调用进程 #关于环境变量 environ是字符指针数组,每一个元素是一个环境变量的指针,最后一个元素是NULL ``` #include <stdio.h> #include <stdlib.h> extern char **environ; main() { int n=0; while(*(environ+n) != NULL) { printf("%s\n",*(environ+n)); n++; } } ``` ##相关函数 **char *getenv(const char *name)**: 返回某个环境变量,失败返回NULL **int putenv(const char *str)**: 用name=value格式增加某一个环境变量,成功返回0,失败返回非0 **int setenv(const char *name, const char *value, int rewrite)**:修改某个环境变量,rewrite为0时如果已经有该环境变量的话不修改,非0的话就修改,成功返回0,失败返回非0 **void unsetenv(const char *name)**: 删除环境变量 *** #动态内存分配 ##函数 **void *malloc(size_t size)**: 申请SIZE大的内存,成功返回该内存的指针,失败返回NULL **void *calloc(size_t n, size_t size)**:申请n*size大的内存,同时会把内存中数据清空(之前程序留下的垃圾数据),成功返回该内存的指针,失败返回NULL **void *realloc(void *ptr, size_t newsize)**:重新分配某个指针指向的内存,成功返回该内存的指针,失败返回NULL **void free(void *ptr)**: 释放内存 ``` int *p = (int*) malloc(10 * sizeof(int)); //申请10个Int的内存大小 //用sizeof获取int 占用内存多少可以增加可移植性 //强制把malloc 返回的指针转成int 指针是一个好习惯 free(p); p = NULL;//释放内存以后把指针变为空指针,可防止迷途指针。(防止之后无意间使用该指针导致意外的错误) ```
上一篇:
C 2.03 函数库errno.h
下一篇:
C 2.05 函数库stgarg.h
文档导航