您的位置:首页 > 编程语言

unix环境高级编程-第七章-进程环境

2011-11-14 12:49 281 查看
这两天都没写博客,主要是我想改变一下方法吧。不想一节节的读了,我想把一个整章看好了,然后进行思考,然后再进行编辑写在博客里。我觉得这样可以省的时间来思考,写程序。把每章中最主要的部门拿出来。算是第二遍复习。可以加深我的印象吧。

1进程终止

进程正常终止:

view plaincopy to clipboardprint?

#include<stdlib.h> 

 
void exit(int status); 

 
void _Exit(int status); 

 
#include<unistd.h> 

 
void _exit(int status); 

view plaincopy to clipboardprint?

/* exit2.c */ 
#include<stdlib.h> 
main() 
{    
    printf("output begin\n"); 

    printf("content in buffer"); 

    exit(0); 
}  

/* exit2.c */
#include<stdlib.h>
main()
{
printf("output begin\n");
printf("content in buffer");
exit(0);
}
编译并运行:

$gcc exit2.c -o exit2

$./exit2output begin

content in buffer

view plaincopy to clipboardprint?

/* _exit1.c */ 
#include<unistd.h> 
main() 
{    
    printf("output begin\n"); 

    printf("content in buffer"); 

    _exit(0); 
} <p>编译并运行:</p><p>$gcc _exit1.c -o _exit1 
$./_exit1 
output begin</p> 

view plaincopy to clipboardprint?

size 

size
命令查看的时候,就可以看到。

5.存储器分配

三个函数的声明分别是:

view plaincopy to clipboardprint?

void* realloc(void* ptr, unsigned newsize);  

void* malloc(unsigned size);  

void* calloc(size_t nelem,
size_t elsize);  

void* realloc(void* ptr, unsigned newsize);
void* malloc(unsigned size);
void* calloc(size_t nelem, size_t elsize);

都在stdlib.h函数库内

原型:extern void *realloc(void *mem_address, unsigned int newsize);

用法:#include <alloc.h>

功能:改变mem_address所指内存区域的大小为newsize长度。

说明:如果重新分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *malloc(unsigned int num_bytes);

用法:#include <alloc.h>

功能:分配长度为num_bytes字节的内存块

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

        当内存不再使用时,应使用free()函数将内存块释放。

原型:extern void *calloc(int num_elems, int elem_size);

用法:#include <alloc.h>

功能:为具有num_elems个长度为elem_size元素的数组分配内存

说明:如果分配成功则返回指向被分配内存的指针,否则返回空指针NULL。

        当内存不再使用时,应使用free()函数将内存块释放。

区别:

1、calloc在动态分配完内存后,自动初始化该内存空间为零,而malloc不初始化,里边数据是随机的垃圾数据

2、realloc是给一个已经分配了地址的指针重新分配空间,参数ptr为原有的空间地址,newsize是重新申请的地址长度

更多内容,欢迎访问:http://blog.csdn.net/wallwind
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息