Linux系统编程_6_进程环境(C程序典型的存储空间)
1.八种结束Linux进程的方法:
五种正常终止方式:
main函数返回;
调用exit;
调用_exit或_Exit
最后一个线程从其启动例程返回
最后一个线程调用pthread_exit
三种异常终止方式:
调用abort。
接收到一个信号终止;
最后一个线程对取消请求做出响应。
exit函数与_exit _Exit函数的差别是exit函数在结束进程之前会调用各种终止处理程序,关闭全部IO流,这会造成全部缓冲中的数据被冲洗(写到磁盘文件);
atexit(void (*fun)void)函数,用来给进程注冊函数。退出时会运行注冊过的函数。注冊几次会调用几次。
2.命令行參数与环境表:
extern char **environ; //每一个程序都会有一张环境表,与參数表一样,环境表也是一个字符指针数组,当中每一个指针以NULL(\0)结束;
全局变量environ指向了该环境表的首地址;
#include <stdio.h> int main(int argc, char **argv, char **env)
{
int i; printf("================Argv Pram===================\n");
for(i=0; i<argc; i++)
{
printf("argc[%d]= %s\n", i, argv[i]);
} printf("\n=============Environment Pram==============\n");
for(; *env != NULL; env++)
{
printf("%s\n", *env);
} return 0;
}
运行结果:
================Argv Pram===================
argc[0]= ./main
=============Environment Pram==============
HOSTNAME=150
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.0.88 12069 22
(......)
3. C程序典型的存储空间
C程序典型的存储空间例如以下:
对于X86处理器的Linux上,正文段从0x08048000单元開始,栈底则在0xc0000000之下開始。堆顶和栈底之间未使用的空间非常大。
注意:未初始化的bss段并不存放在磁盘上的程序文件里,原因是内核在程序開始执行前都将它们设置为0,须要存放在程序文件里的段仅仅有正文段和初始化数据段。
最新文章
- ASP.NET Core 开发-中间件(Middleware)
- js动态的把左边列表添加到右边,可删除。
- 视频直播点播nginx-rtmp开发手册中文版
- Android开发之百度地图--环境搭建
- prototype数组方法的实现
- OGNL表达式
- Java动态代理的两种实现方式:
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表‘XXX’中的标识列插入显式值。
- Windows 7 防火墙对Virtualbox guest的影响
- getopts
- UVa 11246 - K-Multiple Free set
- wget 命令用法详解
- uva 10303
- ajax xmlhttp下open方法POST、GET参数的区别
- WebApi2官网学习记录---Media Formatters
- GDAL 生成shp文件
- Devstack single node Installation on VM
- Android可以换行的布局
- [ext4]03 磁盘布局 – Flexible group分析
- LeetCode 33. Search in Rotated Sorted Array(在旋转有序序列中搜索)
热门文章
- chpasswd - 成批更新用户的口令
- node.js querystring类介绍
- MFC中调用Windows API函数的方式
- pytorch记录:seq2seq例子看看这torch怎么玩的
- $.fn.extend的用法
- 笔试算法题(29):判断元素范围1到N的数组是否有重复数字 &; 计算整数的7倍
- Error opening session. Cause: java.lang.NullPointerExcept.
- 洛谷 1850 NOIP2016提高组 换教室
- 杭电 2803 The MAX(sort)
- 一个简单的模板了解css+div网页布局