• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

Unix环境高级编程学习笔记---The Environment of a Unix Process

发布: 2007-7-04 12:06 | 作者: admin | 来源:  网友评论 | 查看: 21次 | 进入软件测试论坛讨论

领测软件测试网 在学习进程控制之前,先了解一下单个进程的环境.
本章包括如下内容:
进程基本情况;
参数传递过程;
程序的内存分配及布局;
环境变量;

1.进程中止的五种方法:
    正常中止: 从main返回,  调用exit和调用_exit
    非正常中止:调用abort 以及被信号(signal)中止

exit与_exit的区别主要在,前者在退出程序前将关闭该进程所有打开的文件流等清理工作,然后返回内核,而后者则直接返回内核,不作任何清理工作.
另外还有一个atexit函数,可以注册一个函数在程序退出之前执行.
#include
int atexit(void (*func)(void));   //正确注册返回0,否则返回非零值.
一个程序可以多次利用atexit注册多个函数,调用顺序则是注册顺序的逆续.

2.环境列表
程序在执行之前,shell将向程序进程传递参数列表以及环境列表(environment list)
环境列表是由字符指针组成的数组,这个数组的地址保存在一个全局环境变量中extern char **environ

javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)">

3.C程序的内存布局
C程序包含五个内存部分
    Text segment:存放机器指令,该部分一般是多个程序共享,并且为只读
    Initialized data segment: 存放被初始化的数据,如局部变量 int a = 1;
    Uninitialzed data segment : 存放未被初始化数据,如数组 char buffer[100];
    Stack: Automatic变量存放在堆栈中
    Heap: 动态内存分配在Heap中.



4.内存分配
在Ansi C中规定了三个内存分配函数:malloc, calloc, realloc (均在Heap中分配内存)
#include
void*malloc(size_t size);   //分配大小为size个字节的空间
void *calloc(size_t nobj, size_t size);   //为指定个数的对象分配内存,每个对象大小为size字节,共分配nobj*size个字节
void *realloc(void *ptr,size_t newsize); //重新分配Ptr所指内存块的大小,newsize为调整后的空间大小

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网