Unix环境高级编程学习笔记(五)

第七章 进程环境
1、main函数:int main(int argc, char *argv[])

2、进程中止:
正常中止:(1)从main返回;(2)调用exit;(3)调用_exit或_Exit;(4)最后一个线程从启动例程返回;(5)最后一个线程调用pthread_exit;
异常中止:(6)调用abort;(7)接到一个信号并中止;(8)最后一个线程对取消请求做出反应。
 2.1、exit函数:#include<stdlib.h>
   void exit(int status);
  void _Exit(int status);
  #include<unistd.h>
  void _exit(int status);                   _exit,_Exit直接进入内核,exit则先进行一些清理处理(如关闭I/O流等等),然后进入内核。
 2.2、atexit函数:
 #include<stdlib.h> int atexit(void (*func)(void));  一个进程结束时候调用的函数,能够登记32个
 exit函数会先调用中止处理函数,然后关闭打开流,再进入内核。:if expand("%") == ""|browse confirm w|else|confirm w|endif

3、命令行参数:调用exec的进程能够将命令行参数传递给新进程。

4、环境表:每个程序都会接受到一张环境表。   extern char **environ
 按照惯例环境由name=value这样的字符串组成。   通常用getenv和putenv函数来访问特定的环境变量,但是如果要查看整个环境,则必须使用environ

5、c程序的存储空间布局:正文段,初始化数据段,非初始化数据段,栈,堆。

6、共享库:略。

7、存储器分配:malloc,calloc,realloc。
#include<stdlib.h>
void *malloc(size_t size);           分配指定字节数存储区,初始值不确定
void *calloc(size_t nobj, size_t size);  为指定数量且具有长度的的对象分配存储空间
void *realloc(void *ptr, size_t newsize); 更改以前分配的长度
void free(void *ptr);

8、环境变量:
取环境变量:#include<stdlib.h>   char *getenv(const char *name);   返回与name关联的value指针,未找到返回null
设置环境变量(只会影响当前进程和子进程)
 #include<stdlib.h>          int putenv(char *str); 取形式为name = value的字符串,将其放到环境表中
         int setenv(const char *name, const char *value, int rewrite); 设置name为value,name已存在,若rewrite非0,则先删除;若rewrite为0,则不删除
        int unsetenv(const char *name);      删除name定义

9、setjmp和longjmp函数:实现跨越函数的跳转。
#include<setjmp.h>
int setjmp(jmp_buf env);
void longjmp(jmp_buf env, int val);     
示例:程序清单7-5
 9.1、自动、寄存器和易失变量:讨论关于longjmp后变量是否会回滚为原来值。声明为全局或静态变量的值在执行longjmp保持不变。    
 程序清单7-6:全局、静态和易失变量不受优化影响,他们的值是最近所呈现的值。
 9.2、自动变量的潜在问题:略。

10、getrlimit和setrlimit函数:每个进程都有一组资源限制,可以用这两个函数查询和更改。
#include<sys/resource.h>
int getrlimit(int resource, struct rlimit *rlptr);
int setrlimit(int resource, const struct rlimit *rlptr);
struct rlimit{
 rlim_t rlim_cur;/* 软限制 */
 rlim_t rlim_max;/* 硬限制 */
};
更改资源限制时的原则:(1)、任何一个进程都可以将一个软限制改为小于等于硬限制的值;(2)任何一个进程都可以降低硬限制的值,但是必须大于等于软限制的值;(3)只有超级用户可以提升硬限制的值。
resource可以取得值有:RLIMIT_AS(进程可用存储区的最大总长度),RLIMIT_CORE(core文件的最大字节数),RLIMIT_CPU(CPU时间的最大量值)等等。(P165)

转载于:https://www.cnblogs.com/Just-do-it110/archive/2011/08/03/2126620.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot 2.1.5 正式发布,1.5.x 即将结束使命!

Spring Boot 官网在 2019/03/15 这天发布了 Spring Boot 2.1.5 正式版&#xff0c;栈长表示真跟不上了。。 官宣如下 &#xff1a; https://spring.io/blog/2019/05/15/spring-boot-2-1-5-released 仓库也已经跟上&#xff1a; 那这个版本有什么新功能&#xff1f; 1、增加了 S…

linux上安装telnet服务器:linux vmvare虚拟机 安装telnet redhat9

linux上安装telnet服务器:linux vmvare虚拟机 安装telnet redhat9 参考&#xff1a;http://blog.sina.com.cn/s/blog_5688414b0100bhr9.html ------------------------------------------------------------------------------------------- 1、检测 安装之前先检测是否这些软件…

Console-算法[for,if]-有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数...

ylbtech-Arithmetic:Console-算法[for,if]-有5个人坐在一起&#xff0c;问第五个人多少岁&#xff1f;他说比第4个人大2岁。问第4个人岁数1.A&#xff0c;Demo(案例)【程序28】 题目&#xff1a;有5个人坐在一起&#xff0c;问第五个人多少岁&#xff1f;他说比第4个人大2岁。问…

gunicorn 几种 worker class 性能测试比较

Gunicorn, 一个支持WSGI协议的web服务器 Flask, 一个轻量级的python web框架 Gunicorn目前自带支持几种工作方式:sync (默认值) eventlet gevent tornado 测试环境准备 python 2.7 redis-server 2.8.4 压力测试工具ab 代码及相关python包准备 创建虚一个新的虚拟环境并安装需要…

《孙子兵法》【作战第二】

原文&#xff1a;&#xff11;.孙子曰&#xff1a;凡用兵之法&#xff0c;驰车千驷&#xff0c;革车千乘&#xff0c;带甲十万&#xff0c;千里馈粮&#xff0c;则内外之费&#xff0c;宾客之用&#xff0c;胶漆之材&#xff0c;车甲之奉&#xff0c;日费千金&#xff0c;然后十…

linux下ftp服务器的搭建

http://www.cublog.cn/u3/93926/showart_1874130.htmlRHEL4中ftp服务器的搭建首先修改配置文件使主机获得永久ip地址# vi /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0BOOTPROTOstaticIPADDR172.16.16.111NETMASK255.255.0.0GATEWAY172.16.16.1ONBOOTyesTYPEEthernet重…

原来MySQl就是这样工作的

一、MySQL简单介绍MySQL是当今最流行的开源数据库管理系统&#xff0c;超过10亿的下载量足可以证明这点。MySQL以其速度、高可靠性、简单易用&#xff0c;广泛应用,一些大型企业也在逐渐应用&#xff0c;如&#xff1a;Facebook、维基百科等网站。MySQL最早由瑞典的MySQL AB公司…

window 快捷键使用 + idear 编辑器使用

window 快捷键 Art tab : 应用程序切换 Win D : 桌面(当前桌面显示或隐藏) Win M : 所有程序最小化 Ctrl 空格 / Ctrl shift : 中英文切换 Ctrl W : 关闭当前窗口 Ctrl W / Ctrl f4 : 关闭大年标签或弹出的窗口 Win ↓ : 当前窗口最小化 Win ↑ : 当前窗口最大化 …

Flex builder3与eclipse整合 转载

一.首先下载安装Eclipse 3.3 解压到 D:/Program Files/eclipse 到算安装成功了. 二.下载安装Flex Builder 3.0 http://trials.adobe.com/Applications/Flex/FlexBuilder/3/FB3_WWEJ_Plugin.exe1. 指定 Flex Builder 3.0 安装路径为D:/Program Files/eclipse/Flex Builder,进下一…

Jackson动态处理返回字段

有时候业务需要动态返回字段&#xff0c;比如&#xff0c; 场景一&#xff1a;返回 name , birthday, createDate 场景二&#xff1a;返回name, birthday, age 现做个备忘录&#xff0c;以便参考。 下面是引入的POM <dependency> <groupId>com.fasterxml.jackso…

技术规划应该写成什么样?

最近总是接触到规划文档的评审。有自己写的&#xff0c;也有看别人写的&#xff0c;还有帮人出谋划策的。 这些规划的题目大概如:公司的未来语言规划、公共资源管理规划、工业化开发规划等等。但凡规划&#xff0c;大概是一件事&#xff0c;要预先考虑到3年&#xff0c;甚至5年…

jBPM4工作流开发实战 之 第五部分 其他知识

jBPM的异步执行介绍jBPM对于所有的流程执行操作默认都是同步的。也就是说&#xff0c;默认是一个活动执行完成后&#xff0c;再执行另一个活动。 如&#xff0c;Task1->Java1->Java2->Task2&#xff0c;在同步的状态下执行&#xff0c;即使Java1活动要耗时一个小时&am…

Java生成二进制文件与Postman以二进制流的形式发送请求

业务描述&#xff1a; 模拟终端&#xff08;智能家居&#xff09;发送HTTP POST请求&#xff0c;请求参数为二进制流&#xff1b;而且&#xff0c;二进制流是加密后的数据&#xff0c;因此调试分两步&#xff1a; 1、Java代码生成加密后数据&#xff0c;并保存为二进制流文件 &…

Linux下判断cpu物理个数,几核,是超线程还是多核心

原文地址&#xff1a;http://hi.baidu.com/xolee/blog/item/2bedc8b7ef2743e730add16c.html 1. 查看物理CPU的个数#cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 2. 查看逻辑CPU的个数#cat /proc/cpuinfo |grep "processor"|wc -l 3. 查看CPU是…

Linux文件夹权限如何更改?

http://hi.baidu.com/lwvs/blog/item/83245809a30f033de9248835.html 先来了解一下文件属性&#xff0c;在shell环境里输入&#xff1a;ls -l 可以查看当前目录文件。如&#xff1a;drwxr-xr-x 2 nsf users 1024 12-10 17:37 下载文件备份分别对应的是&#xff1a;文件属性 连…

电脑上面玩Android 游戏(.apk文件)

Android模拟器, 下载地址 http://files.cnblogs.com/jx270/BlueStacks-SplitInstaller_native.rar 下载完毕后解压&#xff0c;双击安装, 然后自己去下一些.apk文件&#xff0c;双击即可在电脑上面使用 ps自己配一个手柄,玩游戏不错,

以太网MAC地址

M AC地址有48位&#xff0c;但它通常被表示为12位的点分十六进制数。MAC地址全球唯一&#xff0c;由IEEE对这些地址进行管理和分配。每个地址由两部分组成&#xff0c;分别是供应商代码和序列号。其中前24位二进制代表该供应商代码。剩下的24位由厂商自己分配。 如果48位全是1&…

JQuery最佳实践

作者&#xff1a; 阮一峰 日期&#xff1a; 2011年8月 4日 上周&#xff0c;我整理了《jQuery设计思想》。 那篇文章是一篇入门教程&#xff0c;从设计思想的角度&#xff0c;讲解"怎么使用jQuery"。今天的文章则是更进一步&#xff0c;讲解"如何用好jQuery&quo…

Extracting Text From Image

Microsoft Office Document Imaging 虚拟打印机http://www.codeproject.com/Articles/10130/OCR-with-Microsoft-OfficeExtracting Text From ImageThe following program shows you how to extract text from image. For this youll have add reference (under COM tab) of &q…

Linux平台gcc和动态共享库的基础知识

http://www.javaeye.com/topic/261176 对大多数不从事Linux平台C语言开发的人来说&#xff0c;GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的&#xff0c;其实我也不太熟悉&#xff0c;姑且写点基础知识&#xff0c;权当做备忘吧。 一、GNU gcc的编译工具用法 我们…