chapter 7 进程环境

作者: 小鲍比大爷 | 来源:发表于2019-05-13 14:06 被阅读0次

关键字:main函数运行、程序终止和回调注册、环境变量与环境表、c程序存储空间布局、longjmp、资源限制

  • main函数调用的实现是c编译器帮忙实现的,c编译器在我们的main函数之前加入了内置好的启动程序,这个启动程序从内核取得命令行参数和环境变量。启动程序如果用c代码类似如下这样:
exit(main(argc, argv))

但一般启动程序使用汇编编写

  • 进程退出的8种方式


    image.png
  • exit(0)等价于return(0)
  • atexit可以用来注册exit handler,本质就是注册程序结束前需要执行的回调函数,需要注意的是:函数注册顺序与执行顺序相反;同一函数注册多次,那么也会执行多次
  • 内核使程序执行的唯一方法是调用一个exec函数,进程自愿终止的唯一方法是执行exit系列的函数
  • ISO C 和 POSIX.1都要求argv[argc]为一个空指针
  • environ全局变量保存所有的环境变量,但是一般使用getenv和putenv函数操作环境变量。environ指向一张环境表
  • size命令可以报告正文段,数据段和bss段的长度,dec和hex分别为十进制和是十六进制的三段的总长度
[root@localhost include]# size /bin/sh
   text    data     bss     dec     hex filename
 903323   35984   22920  962227   eaeb3 /bin/sh
  • setjmp/longjmp,支持跨函数返回,抛弃当前栈帧,恢复setjmp时的栈状态
  • longjump跳转时,只有volatile变量不会恢复到之前的值,所以在这个场景,可移植程序必须使用volatile变量
  • 自动变量的潜在问题:栈上分配的临时变量在返回后不能继续使用,如果要实现这种需求,需要指定为全局变量或者在堆上分配
  • 资源限制影响到调用进程并由子进程继承,这就意味着,为了影响一个用户的所有后续进程,需将资源限制的设置构造在shell之中(ulimit命令,getrlimit和setrlimit方法)

相关文章

  • chapter 7 进程环境

    关键字:main函数运行、程序终止和回调注册、环境变量与环境表、c程序存储空间布局、longjmp、资源限制 ma...

  • 操作系统知识总结

    操作系统 面向进程和线程学习操作系统。 目录 Chapter 1Chapter 2Chapter 3Chapter...

  • APUE第7章 进程环境

    7.1引言 将介绍进程控制原语,在此之前需先了解进程的环境。本章 中将学习:当程序执行时,其main函数是如何被调...

  • 进程环境

    main函数 进程的执行是从main函数开始的,下面介绍一下main函数的原型。 可以看到main函数是有两个参数...

  • Fortress Besiege012

    Chapter7 In this chapter, Ms Wang and Mr Wang want to inv...

  • EN Note # A Study in Scarlet, Ch

    上接 EN Note # A Study in Scarlet, Chapter 1-7 Chapter 8The...

  • Linux程序崩溃后磁盘异常占用

    记录CentOS 7程序崩溃后磁盘异常占用问题 A. 问题复述CentOS 7 远程连接环境下强行终止已坏死的进程...

  • Effective Objective-C 2.0 Tips 总

    Effective Objective-C 2.0 Tips 总结 Chapter 5,6,7 Chapter 5...

  • 应用进程的启动流程

    1.基础:Linux进程的启动(两种策略) 子进程继承父进程的执行环境 自主配置子进程的执行环境 2.Androi...

  • 操作系统思考 第二章 进程

    第二章 进程 作者:Allen B. Downey 原文:Chapter 2 Processes 译者:飞龙 协...

网友评论

    本文标题:chapter 7 进程环境

    本文链接:https://www.haomeiwen.com/subject/meuaoqtx.html