[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. 8.openssl req

    数字证书申请和生成工具.也可以为根CA自行签署证书. 该命令中很多值.属性.格式或默认值都在config文件openssl.cnf中指定. [root@xuexi ~]# man req NAME r ...

  2. 自动化前端构建工具--gulp

    Gulp是一个基于任务的javascript工程命令行流式构建工具.为什么要用Gulp呢?前端开发进入到工程化阶段,我们需要压缩合并文件,加MD5戳:如果使用 CoffeeScript/ES6 去代替 ...

  3. XproerIM V2开源,基于XproerUI引擎构架

    资源下载:XproerIM源代码(访问密码:2e47),imServer(访问密码 364c), 技术交流群:6259765 技术支持:3040217208 咨询邮箱:2190615607@qq.co ...

  4. SQL Server(三):Select语句

      1.最基本的Select语句: Select [Top n [With Ties]] <*|Column_Name [As <Alias>][, ...n]> From & ...

  5. java打包成jar,但不打包配置文件

    有时候我们做java project的时候,都会打包成jar程序,为了方便部署会加个配置文件conf/pro.properties(conf文件夹与src文件夹同级) 但是不想打包进jar.其实用ec ...

  6. (转载)SPRINGMVC表单标签简介

    SpringMVC表单标签简介 在使用SpringMVC的时候我们可以使用Spring封装的一系列表单标签,这些标签都可以访问到ModelMap中的内容.下面将对这些标签一一介绍. 在正式介绍Spri ...

  7. 8 TIPS TO BECOME A MICROSOFT TECHNICAL EVANGELIST

    8 TIPS TO BECOME A MICROSOFT TECHNICAL EVANGELIST By Thomas Lewis February, 28 2012 I have had a pai ...

  8. [转载]Js小技巧||给input type=“password”的输入框赋默认值

    http://www.cnblogs.com/Raywang80s/archive/2012/12/06/2804459.html [转载]Js小技巧||给input type="passw ...

  9. css3、html5学习笔记

    2016/12/14 ----认真看完绝对对你有帮助 HTML5针对移动端,移动端的浏览器主要是chrome,是webkit内核; app(applicatin):应用; native app:原生的 ...

  10. 介绍开源的.net通信框架NetworkComms框架之三 传递List

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  开源地 ...