[a] exit / _Exit / _exit

#include <stdlib.h>
void exit(int status)
void _Exit(int status)
#include <unistd.h>
void _exit(int status) 
  • exit 在终止进程之前会调用 fflush 及 fclose
  • 类 UNIX 平台上,_Exit 与 _exit 相同,直接终止进程而不做清理工作

[b] atexit

#include <stdlib.h>
int atexit(void (*func) (void)) //成功返回0,出错返回非 0 
  • 进程正常终止前执行的函数,无返回值无参数,执行順序与声明順序相反

[c] malloc / calloc/ realloc /free

#include <stdlib.h>
void *malloc(size_t size)
void *calloc(size_t nobj, size_t size)
void *realloc(void *ptr, size_t newsize)
//成功返回指针,出错返回 NULL
void free(void *ptr) 
  • malloc 在 FreeBSD 中的实现为 jemalloc
  • calloc 分配的空间大小为 nobj × size,分配的空间会初始化为 0
  • realloc 中 newsize 指重新分配的最终空间大小,不是新、旧存储区长度之差,第一个参数若指定为 NULL,则与 malloc 功能相同

[d] getenv

#include <stdlib.h>
char *getenv(const char *name) //成功匹配返回字符串指针,否则返回 NULL 
  • 获取指定环境变量的值
  • 若要查看所有环境变量,需要使用全局变量 extern char **environ

[e] setenv / unsetenv

#include <stdlib.h>
int setenv(const char *name, const char *value, int rewrite)
int unsetenv(const char *name)
//成功返回 0,出错返回 -1 
  • 用于设置环境变量,若 rewrite 为 0,则不更新现有定义,若为非 0,则覆盖现有定义
  • 仅作用于进程及其子进程环境,不影响 shell 环境

[f] setjmp / longjmp

#include <setjmp.h>
int setjmp(jmp_buf env) //若直接调用,返回 0,若从 longjmp 返回,则为非 0
void longjmp(jmp_buf env, int val) 
  • 用于跨函数跳转,goto 用于函数内跳转
  • jmp_buf 类型的变量 env 用于保存调用 setjmp 时的环境信息,由 setjmp 写入,longjmp 使用,val 用于指定从longjmp 跳转时,setjmp 的返回值
  • 若要保证跳转之后各变量恢复至初始状态,需要使用 volatile 关键字修饰变量,以免受编译器优化影响

[g] getrlimit / setrlimit

#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlim)
int setrlimit(int resource, const struct rlimit *rlim)
//成功返回 0,出错返回非 0 
struct rlimit {
rlim_t rlim_cur; //软限制
rlim_t rlim_max; //硬限制
  • resource 的常用取值:

    • RLIMIT_FSIZE:进程可以创建的文件的最大字节长序
    • RLIMIT_NOFILE:进程能打开的文件数量上限
    • RLIMIT_STACK:栈的最大字节长度
    • RLIMIT_NICE:nice 的最大值
  • 常量 RLIM_INFINITY 表示该条目无限制

[07]APUE:进程环境的更多相关文章

  1. [APUE] 进程环境

    APUE 一书的第七章学习笔记. 进程终止 有 8 种方式可以使得进程终止,5 种为正常方式: Return from main Calling exit() Calling _exit or _Ex ...

  2. (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境

    . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...

  3. 《UNIX环境高级编程》(APUE) 笔记第七章 - 进程环境

    7 - 进程环境 Github 地址 1. main 函数 C 程序总是从 main 函数 开始执行: int main(int argc, char *argv[]); \(argc\) 为命令行参 ...

  4. Unix编程第7章 进程环境

    准备雄心勃勃的看完APUE,但是总感觉看着看着就像进入一本字典,很多地方都是介绍函数的用法的,但是给出例子远不及函数介绍的多.而且这本书还是个大部头呢.第7章的讲的进程环境,进程是程序设计中一个比较重 ...

  5. Linux进程环境

    Linux下C程序都是main开始的,main函数的原型是: int main(int argc, char **argv) 其中argc是命令行参数的数目,argc是指向参数的各个指针所构成的数组. ...

  6. Unix环境高级编程(五)进程环境

    本章主要介绍了Unix进程环境,包含main函数是如何被调用的,命令行参数如何传递,存储方式布局,分配存储空间,环境变量,进程终止方法,全局跳转longjmp和setjmp函数及进程的资源限制. ma ...

  7. linux_api之进程环境

    本篇索引: 1.引言 2.main函数 3.进程的终止方式 4.exit和_exit函数 5.atexit函数 7.环境表 8.C程序程序空间布局 9.存储空间的手动分配 10.库文件 1.引言 一个 ...

  8. Linux/UNIX之进程环境

    进程环境 进程终止 有8种方式使进程终止,当中5中为正常终止,它们是 1)      从main返回 2)      调用exit 3)      调用_exit或_Exit 4)      最后一个 ...

  9. APUE(7)---进程环境

    一.main函数 C程序总是从main函数开始执行.main函数的原型是: int main(int argv, char *argv[]); 当内核执行C程序时,在调用main前先调用一个特殊的启动 ...

随机推荐

  1. prolog 规则

    规则 规则由几个互相依赖的简单句(谓词)组成.用来描述事实之间的依赖关系,如:因果关系,蕴含关系,对应关系 规则的实质就是存储起来得查询 其语法结构如下: head:-body head 为谓词的定义 ...

  2. 实例学习SQL的Select命令

    1.查找员工的编号.姓名.部门和出生日期,如果出生日期为空值,--显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd.select emp_no ,emp_name ,dept ,isnu ...

  3. RedHat6安装gcc

    RedHat RHEL 6.0安装gcc的方法 最近在折腾RedHat6.0 ,全是命令,号称比windows安全的Linux,没有界面,也不知道所谓的专家们如何比的,一个界面做的非常好的Window ...

  4. Two Pointers Day

    (1)Reverse String 解题思路简单明了,但是要注意时间复杂度问题!!! 代码如下:(声明一个与字符串等长的char数组,然后倒序区字符串中的字符,放入数组即可.) public clas ...

  5. DIOCP之开发流程图之Server

    server开发流程图 暂时没有找到好的流程图绘制软件,就用画图来做的,比较乱,太慢了

  6. python安装tkinter

    python2安装tkinter sudo apt-get install python-tk python3 安装tkinter sudo apt-get install python3-tk

  7. bat调用bat的一个巨坑

    [一个巨坑] a.bat的内容:echo 1b.batecho 2执行结果:运行a.bat时,输出1,然后调用b.bat, 但是 echo 2 显示不出来. bat怎么调用bat文件并返回? 例如主文 ...

  8. Android根据文件路径加载指定文件

    Android根据指定的文件路径加载指定文件格式(图片格式 png, gif,jpg jpeg)的文件相关信息的列表. 如图: 代码: public class Util { /**** * 计算文件 ...

  9. 在Android项目中引入MuPdf

    由于公司手机App要加入一个附件查看功能,需要查看PDF文件,在网上找了许多第三方工具,最后选择了MuPDF. 更多第三方工具可以查看大神总结的:http://www.cnblogs.com/poke ...

  10. AJAX请求 $.post方法的使用

    使用jQuery的$.post方法可以以POST形式向服务器发起AJAX请求.$.post方法是jQuery的实用工具方法. $.post方法语法 $.post(url,parameters,call ...