进程环境
来源:互联网 发布:java jdk版本查看 编辑:程序博客网 时间:2024/05/01 12:31
进程终止
有8种方式使进程终止,其中5种为正常终止,它们是
(1)从main返回。
(2)调用exit。
(3)调用_exit或_Exit。
(4)最后一个线程从其启动例程返回。
(5)最后一个线程调用pthread_exit。
异常终止有3种方式,它们是
(1)调用abort。
(2)接到一个信号并终止。
(3)最后一个线程对取消请求做出响应。
1.exit函数
有三个函数用于正常终止一个程序:_exit和_Exit立即进入内核,exit则先执行一些清理处理(包括调用执行各终止处理程序,关闭所有标准I/O流等),然后进入内核。
#include <stdlib.h>
void exit(int status);
void _Exit(int status);
#include <unistd.h>
void _exit(int status);
2.atexit函数
一个进程可以登记多个函数,这些函数将由eixt自动调用,调用顺序与登记顺序相反。
#include <stdlib.h>
int atexit(void (*func)(void));
C程序的存储空间布局
由以下几部分组成:
1.正文段。这是由CPU执行的机器指令部分。
2.初始化数据段。它包含了程序中需明确地赋初值的变量。
3.非初始化数据段。通常将此段称为bss段,在程序开始执行之前,内核将此段中的数据初始化为0或空指针。
4.栈。自动变量以及每次函数调用时所需保存的信息都存放在此段中。
5.堆。通常在堆中进行动态存储分配。由于历史上形成的惯例,堆位于非初始化数据段和栈之间。
存储器分配
(1)malloc。分配指定字节数的存储区。此存储区中的初始值不确定。
(2)calloc。为指定数量具指定长度的对象分配存储空间。该空间中的每一位都初始化为0。
(3)realloc。更改以前分配区的长度。
#include <stdlib.h>
void *malloc(size_t size);
void *calloc(size_t nobj, size_t size);
void *realloc(void *ptr, size_t newisze);
void free(void *ptr);
getrlimit和setrlimit函数
每个进程都有一组资源限制,其中一些可以用getrlimit和setrlimit函数查询和更改。
#include <sys/resource.h>
int getrlimit(int resource, struct rlimit *rlptr);
int setrlimit(int resource, const struct rlimit *rlptr);
在更改资源限制时,须遵循下列三条规则:
(1)任何一个进程都可将一个软限制值更改为小于或等于其硬限制值。
(2)任何一个进程都可降低其硬限制值,但它必须大于或等于其软限制值。
(3)只有超级用户进程可以提高硬限制值。
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程环境
- 进程及其进程环境
- 进程环境与进程控制
- 进程学习2--进程环境
- Unix环境编程-进程环境
- UNIX进程环境小结
- APUE进程环境
- 时间和日期例程
- UI进阶第七发:UITabBarController生命周期(使用storyoard搭建)
- UI进阶第七发:UITabBarController简单介绍
- java中相对路径,绝对路径问题总结(转)
- 你必须了解的第一个python程序
- 进程环境
- 黑马程序员-IOS-OC基础-面向对象语法三
- UI进阶第八发:Suege和Modal
- vnc不显示ubuntu桌面环境的解决方案之一
- 进程控制
- UI进阶第九发:iOS常用事件
- UI进阶第九发:iOS事件产生和传递过程(包括底层)
- iOS开发者如何提高自己的水平?
- UI进阶第九发:iOS事件的响应者链条