APUE CH7 Environ

这一章的学习让我了解到

进程典型存储空间

环境变量和命令行参数是如何传递给进程的

进程正常终止的5种形式和异常终止的3种形式

如何动态分配给进程额外的存储空间

setjmp和longjmp函数及它们与栈的交互,以及对auto register volatile static global 5种类型变量的状态影响

  这是一种非局部转移--跨越栈帧

  volatile 防止编译器对代码的优化 type specifier 区分嵌入式和c程序员

  一个变量可以既是const又是volatile的?

  一个指针可以是volatile?

  函数的参数是volatile会发生什么?

getrlimit和setrlimit函数对软限制和硬限制的读取和设置。

  资源限制

RLIMIT_AS       (infinite)  (infinite)
RLIMIT_CORE              0  (infinite)
RLIMIT_CPU      (infinite)  (infinite)
RLIMIT_DATA     (infinite)  (infinite)
RLIMIT_FSIZE    (infinite)  (infinite)
RLIMIT_LOCKS    (infinite)  (infinite)
RLIMIT_MEMLOCK       65536       65536  
RLIMIT_NOFILE         1024        4096  
RLIMIT_NPROC          4096        7906  
RLIMIT_RSS      (infinite)  (infinite)
RLIMIT_STACK       8388608  (infinite)

时间: 2025-01-12 22:14:58

APUE CH7 Environ的相关文章

[APUE]UNIX进程的环境(下)

一.共享库 共享库使得可执行文件中不再需要包含常用的库函数,而只需在所有进程都可存取的存储区中保存这种库例程的一个副本.程序第一次执行的时候或第一次调用某个库函数的时候,用动态链接方法将程序与共享库函数相链接,这减少了每个可执行文件的长度,但增加了一些运行时间开销.另一个优点就是可以用库函数的新版本来替换老版本而无需对该库的程序重新链接编译. 不同的系统使用不同的方法说明程序是否需要使用共享库.比较典型的有cc和ld命令的可选项. 二. 存储器分配 ANSI C说明了三个存储空间动态分配的函数(

【APUE】Chapter8 Process Control

这章的内容比较多.按照小节序号来组织笔记的结构:再结合函数的示例带代码标注出来需要注意的地方. 下面的内容只是个人看书时思考内容的总结,并不能代替看书(毕竟APUE是一本大多数人公认的UNIX圣经). 8.2 Process Identifiers 1. unix system给系统分配进程pid采用的是delay reuse策略:即,刚用完被释放的pid不会马上分配给新的进程,目的是防止新进程错误使用与之前进程相同的ID(这块内容还没太懂,以后再看):但具体等多久不一定. 2. 有几个特殊的p

apue学习笔记(第十二章 线程控制)

本章将讲解控制线程行为方面的详细内容,而前面的章节中使用的都是它们的默认行为 线程属性 pthread接口允许我们通过设置每个对象关联的不同属性来细调线程和同步对象的行为.管理这些属性的函数都遵循相同的模式:1.每个对象与自己类型的属性对象进行关联(线程与线程属性关联,互斥量与互斥量属性关联等)2.有一个初始化函数,把属性设置为默认值3.有一个销毁属性对象的函数4.每个属性都有一个从属性对象中获取属性值的函数5.每个属性都有一个设置属性值的函数 下面是线程属性pthread_attr_t的初始化

APUE(8)---进程控制(1)

一.进程标识 每个进程都有一个非负整型标识的唯一进程ID.因为进程ID标识符总是唯一的,常将其用做其他标识符的一部分以保证其唯一性.进程ID虽然是唯一的, 但是却是可以复用的.ID为0的进程通常是调度进程,常常被称为交换进程(swapper).该进程是内核的一部分,它并不执行任何磁盘上的程序,因此也被称为系统进程.进程ID为1通常是init进程,在自举过程结束时由内核调用.此进程负责在自举内核后启动一个UNIX系统,init通常读取与系统有关的初始化文件,并将系统引导一个状态.init进程绝不会

读书笔记-APUE第三版-(7)进程环境

本章关注单进程运行环境:启动&终止.参数传递和内存布局等. 进程启动终止 如图所示: 启动:内核通过exec函数执行程序,在main函数运行之前,会调用启动例程(start-up routine),取得命令行参数和环境变量.可以把启动例程理解为exit(main(argc,argv)). 终止:五种正常终止方式(从main方法返回/exit/_exit/最后一个线程返回/最后一个线程退出):三种异常终止方式(abort/接收到信号/最后一个线程接收到取消请求). exit与_exit关系:exi

【Linux】APUE or ULK

APUE: Advance Programming in the Unix Enviroment ULK  : Undertanding the Linux Kernel 一直想读这两本书,希望对Linux有更多的了解,尤其是memory management & multi-process/thread.据说,APUE是讲如何在Linux上编程,ULK是讲kernel内部如何设计实现的.这个周末把两本书的Preface和Chapter 1都看了一遍,确实如此. Conclusion: 直接看英

APUE学习笔记:第七章 进程环境

7.1 引言 本章将学习:当执行程序时,其main函数是如何被调用的:命令行参数是如何传送给执行程序的:典型的存储器布局是什么样式:如何分配另外的存储空间:进程如何使用环境变量:各种不同的进程终止方式等:另外还将说明longjmp和setjmp函数以及它们与栈的交互作用:还将介绍研究进程的资源限制 7.2 main函数 C程序总是从main函数开始执行.当内核执行C程序时,在调用main前先调用一个特殊的启动例程.可执行程序文件将此启动例程指定为程序的起始地址——这是由连接编辑器设置的,而连接编

(五) 一起学 APUE 之 进程环境

. . . . . 本章前半部分讨论进程的开始和结束,后半部分讨论参数列表.环境变量.C 程序虚拟地址空间布局等内容.终于是一章原理比较多的章节了. 注意,本系列博文所说的某章并非是博文标题上的标号,而是指 <APUE> 第三版的章节号. 1.main() 函数 1 int main (int argc, char *argv[]); 2 3 int main (int argc, char **argv); main() 函数大家一定再熟悉不过了,从写 Hello World! 的时候开始,

(六) 一起学 Unix 环境高级编程(APUE) 之 进程控制

. . . . . 目录 (一) 一起学 Unix 环境高级编程(APUE) 之 标准IO (二) 一起学 Unix 环境高级编程(APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程(APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程(APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程(APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程(APUE) 之 进程控制 上一篇博文中我们讨论了进程环境,相信大家对进程已经有了初步的认识