[07]APUE:进程环境
[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:进程环境的更多相关文章
- [APUE] 进程环境
APUE 一书的第七章学习笔记. 进程终止 有 8 种方式可以使得进程终止,5 种为正常方式: Return from main Calling exit() Calling _exit or _Ex ...
- (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编 ...
- 《UNIX环境高级编程》(APUE) 笔记第七章 - 进程环境
7 - 进程环境 Github 地址 1. main 函数 C 程序总是从 main 函数 开始执行: int main(int argc, char *argv[]); \(argc\) 为命令行参 ...
- Unix编程第7章 进程环境
准备雄心勃勃的看完APUE,但是总感觉看着看着就像进入一本字典,很多地方都是介绍函数的用法的,但是给出例子远不及函数介绍的多.而且这本书还是个大部头呢.第7章的讲的进程环境,进程是程序设计中一个比较重 ...
- Linux进程环境
Linux下C程序都是main开始的,main函数的原型是: int main(int argc, char **argv) 其中argc是命令行参数的数目,argc是指向参数的各个指针所构成的数组. ...
- Unix环境高级编程(五)进程环境
本章主要介绍了Unix进程环境,包含main函数是如何被调用的,命令行参数如何传递,存储方式布局,分配存储空间,环境变量,进程终止方法,全局跳转longjmp和setjmp函数及进程的资源限制. ma ...
- linux_api之进程环境
本篇索引: 1.引言 2.main函数 3.进程的终止方式 4.exit和_exit函数 5.atexit函数 7.环境表 8.C程序程序空间布局 9.存储空间的手动分配 10.库文件 1.引言 一个 ...
- Linux/UNIX之进程环境
进程环境 进程终止 有8种方式使进程终止,当中5中为正常终止,它们是 1) 从main返回 2) 调用exit 3) 调用_exit或_Exit 4) 最后一个 ...
- APUE(7)---进程环境
一.main函数 C程序总是从main函数开始执行.main函数的原型是: int main(int argv, char *argv[]); 当内核执行C程序时,在调用main前先调用一个特殊的启动 ...
随机推荐
- 第六百一十天how can I 坚持
今天又去了趟ccrs,终于把环境打起来了,下午就去中关村了,回来的时候还忘了带电脑电源,明天还得去fh,也是醉了.. 好困啊.得睡觉了,项目感觉也不是多难,不过代码还得好好熟悉熟悉.加油吧.
- poi API
一. POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 二. HSSF概况 HSSF 是 ...
- FireDac 的RecordCount 相关测试 记录。
unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...
- div水平居中且垂直居中
<style> .vertical-center{ position: absolute; top: 50%; left: 50%; transform: translate(-50%, ...
- Activity has leaked window that was originally added
错误: E/WindowManager: android.view.WindowLeaked: Activity com.x.x.x has leaked window com.android.int ...
- CSS中如何让元素隐藏
在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.下面一个个列出,选一个适合你的 { display: none; /* 不 ...
- c++保留小数问题,如有不足或错误,欢迎指出
#include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...
- bootstrap制作搜索框及添加回车搜索事件
下面是开发中用bootstrap制作的一个搜索框,以及给搜索框添加回车搜索事件的一个小案例. bootstrap制作搜索框及添加回车搜索事件 下面是功能实现的代码: <!DOCTYPE html ...
- DataRow[]与DataTable的转换代码【精炼】
Day_20170106 代码记录 //DataTable查询出DataRow[] DataRow[] drs = AllSysModuleDs.Tables[].Select(string.Form ...
- linux sysnc
rsync -az --delete --exclude="test/exclude/" test /data/sync/ 同步目录文件,排除test/exclude目录 实现目 ...